Avalonia跨平台入门第三十三篇之TreeView

前面一篇分享了在DataGrid中玩耍多选下拉框;今天再来根据UI射击师的射击来玩耍一下TreeView,先来看看射击前和实现后:

30c16ffe0b21a44cff791fba181c42c9.pngb90dc2c51d1bcd0033e2f7a88495e51a.gif

1、本来想直接Expander+ListBox,想想还是选TreeView吧,毕竟后面如果再增加一个层级的话,直接在数据源增加一层数据就完事了;

2、TreeView的ControlTheme:

<ControlTheme x:Key="{x:Type TreeView}" TargetType="TreeView">
  <Setter Property="Foreground" Value="{DynamicResource TreeViewItemForeground}" />
  <Setter Property="Background" Value="Transparent" />
  <Setter Property="BorderBrush" Value="Transparent" />
  <Setter Property="BorderThickness" Value="0" />
  <Setter Property="Padding" Value="0" />
  <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
  <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
  <Setter Property="ScrollViewer.IsScrollChainingEnabled" Value="True" />
  <Setter Property="ItemTemplate" Value="{StaticResource LedDataTemplate}"/>
  <Setter Property="ItemContainerTheme" Value="{StaticResource LedTreeViewItem}"/>
</ControlTheme>

3、TreeView的ItemTemplate:

<TreeDataTemplate  x:Key="LedDataTemplate" ItemsSource="{Binding SubNodes}">
  <WrapPanel Orientation="Horizontal">
    <Ellipse Width="10" Height="10"
         Fill="{Binding StatusType,Converter={StaticResource StatusTypeEnumToEllipseFillBrushConverter}}"/>
    <TextBlock x:Name="ShowTbk" Margin="10,0,0,0" Text="{Binding Title,Mode=TwoWay}"
           Foreground="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeViewItem}}}"
           FontSize="18"/>
  </WrapPanel>
</TreeDataTemplate>

4、关于TreeViewItem中Selected:

<Style Selector="^:selected">
  <Setter Property="Foreground" Value="{StaticResource TreeViewItemForegroundSelected}" />
</Style>


<Style Selector="^:selected /template/ Border#PART_LayoutRoot">
  <Setter Property="Background" Value="{DynamicResource TreeViewItemBackgroundPointerOver}" />
‍</Style>

5、关于ItemsSource绑定:

<TreeView Width="200" ItemsSource="{Binding Nodes}"/>

最终简单的效果先这样吧47d5cc73f2c7e4d8af2d405b112d3be2.png;以后有时间的话,可以再去摸索一下更复杂的效果81b591b617f23aa69cec653272437688.png;编程不息、Bug不止、无Bug、无生活ee0992bef836214a2fb37d81468a0249.png;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值