1

任何人都可以提供 WPF 树视图(绑定到实时源)的任何指针或示例,其中每个根节点及其子节点代表不同类型的绑定源摘要?

道歉 - 我通常不会问这样开放的“编写一些示例代码”问题,但我对 WPF 相对较新,并且努力在最佳前进方向上站稳脚跟。

例如;

Year of Birth
 [] 80 (2)
 [] 85 (1)
 [] 90 (14)

Course
 [] Engineering (20)
 [] Accountancy (2)

Gender
 [] Male (10)
 [] Female (1)

例如,此树视图将绑定到可观察的学生列表(学生模型将包含他们的 DOB、学习的课程和性别)。[] 表示一个复选框,允许用户根据他们的选择过滤数据源。

附言。我将使用 MVVM 方法并计划使用 ReactiveUI。

4

2 回答 2

1

让我们从基础开始 - 实际上代表这个视图:

IEnumerable<ICategoryTileViewModel> TreeView;

public interface ICategoryTileViewModel
{
    public string CategoryName { get; set; }
    public IEnumerable<IFilterValueTileViewModel> Children { get; set; }
}

public interface IFilterValueTileViewModel
{
    public bool Checked { get; set; }
    public string Description { get; set; }
    public int CurrentCount { get; set; }
}

如何生成 TreeView 取决于您尚未提及的数据源的外观。但是,它几乎肯定会涉及到GroupBy运营商

于 2013-02-21T19:37:43.157 回答
0

这涉及使用 HierarchicalDataTemplate 修改树视图的项目模板,该模板应如下所示:

你的看法

<TreeView ItemsSource="{Binding Children, Mode=TwoWay}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Children, Mode=TwoWay}">
            <StackPanel Orientation="Horizontal" ToolTip="{Binding Description}">
                <!--You can add your checkbox here and remove the image-->
                <Image Source="{Binding Icon}" Height="16" Width="16"/>
                <!--You can add your checkbox here and remove the image-->
                <TextBlock Text="{Binding Name}" Margin="4,0,4,0"/>
            </StackPanel>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

你的虚拟机应该从这个类继承

public abstract class VM
{
   public string Name {get; set;}
   public ObservableCollection<VM> Children {get; set;}
}

您的应用程序的数据上下文应该公开指向树视图的项目源的 Children。

您必须将其扩展到您对树视图摘要的想法。

于 2013-02-21T20:02:06.897 回答