我有一个对象 MyResult,其中包含一个列表“List MyItems”。
我想将此添加到 ac# WPF TreeView。
最好的方法是什么?
是否有分步教程?因为我对所有的 MVVM 类等感到困惑。
谢谢
我假设您列表中的对象有某种列表。如果是这样的话,你应该看看使用分层数据模板。
一个简单的例子可能如下所示。这是来自我与 radtreeview 一起使用的段,但它应该工作相同。
<!-- xaml -->
<UserControl.Resources>
<Style x:Key="_treeViewItemStyle" TargetType="telerik:RadTreeViewItem">
<Setter Property="Visibility" Value="{Binding IsVisible, Converter={StaticResource VisibilityConverter}}" />
<Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
</Style>
<UI:HierarchicalDataTemplate x:Key="_treeViewTemplate"
ItemsSource="{Binding NodeItems}"
>
<TextBlock Margin="3,0,0,0" Text="{Binding Header}">
</TextBlock>
</UI:HierarchicalDataTemplate>
</UserControl.Resources>
<telerik:RadTreeView x:Name="_pageNavigator" ItemsSource="{Binding InspNavList}" ItemDoubleClick="SendFocusToPage" SelectedItem="{Binding SelectedNavItem, Mode=TwoWay}" ItemTemplate="{StaticResource _treeViewTemplate}" ItemContainerStyle="{StaticResource _treeViewItemStyle}" />
做事没有最好的方法。嗯,实际上有,但是你需要更多关于系统本身和当前情况的数据(以及一些深刻的知识)来了解做事的最佳方式。好吧,把它放在一边。
如果您想使用绑定,可以执行以下操作:
一个。在您的页面/窗口/用户控件中设置 DataContext 属性以指向您的对象 (MyResult)。
湾。在您的 XAML 文件中,使用以下代码段将 treeView 项目绑定到该列表:
<TreeView ItemsSource={Binding MyItems}>
....
</TreeView>
C。享受结果。
但是,您需要考虑几件事情: 1. 您应该为 MyItems 对象实现 DataTemplate。默认实现只会将 ToString() 结果放入树视图中。2. 如果你想使用分层数据(意思是有层次的数据),你应该实现 HierarchicalDataTemplate 并指出从哪里获取树中每个节点的子节点。3. 您应该考虑使用 ObservableCollection 进行正确绑定——这样每次添加/删除列表中的项目都会调用 UI 中的更改。