前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Avalonia跨平台入门第三十三篇之TreeView

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

作者头像
WPF程序员
发布2024-04-19 14:17:54
1510
发布2024-04-19 14:17:54

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

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

2、TreeView的ControlTheme:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<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绑定:

代码语言:javascript
复制
<TreeView Width="200" ItemsSource="{Binding Nodes}"/>

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WPF程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档