0

我有一个对象 MyResult,其中包含一个列表“List MyItems”。

我想将此添加到 ac# WPF TreeView。

最好的方法是什么?

是否有分步教程?因为我对所有的 MVVM 类等感到困惑。

谢谢

4

3 回答 3

1

我假设您列表中的对象有某种列表。如果是这样的话,你应该看看使用分层数据模板。

一个简单的例子可能如下所示。这是来自我与 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}" />
于 2012-04-10T17:48:43.067 回答
1

您可以使用

treeview.ItemsSource = 我的列表。

是一个使用 MVVM 的教程。

于 2012-04-10T17:48:50.310 回答
1

做事没有最好的方法。嗯,实际上有,但是你需要更多关于系统本身和当前情况的数据(以及一些深刻的知识)来了解做事的最佳方式。好吧,把它放在一边。

如果您想使用绑定,可以执行以下操作:

一个。在您的页面/窗口/用户控件中设置 DataContext 属性以指向您的对象 (MyResult)。

湾。在您的 XAML 文件中,使用以下代码段将 treeView 项目绑定到该列表:

  <TreeView ItemsSource={Binding MyItems}>
     ....
  </TreeView>

C。享受结果。

但是,您需要考虑几件事情: 1. 您应该为 MyItems 对象实现 DataTemplate。默认实现只会将 ToString() 结果放入树视图中。2. 如果你想使用分层数据(意思是有层次的数据),你应该实现 HierarchicalDataTemplate 并指出从哪里获取树中每个节点的子节点。3. 您应该考虑使用 ObservableCollection 进行正确绑定——这样每次添加/删除列表中的项目都会调用 UI 中的更改。

这里有几个链接可以帮助您入门:第一第二第三

于 2012-04-10T17:50:38.060 回答