gpt4 book ai didi

c# - 具有分层对象的 MVVM 的引用实现

转载 作者:行者123 更新时间:2023-12-03 10:55:11 24 4
gpt4 key购买 nike

我阅读了一些 MVVM 教程( 1234 ),但我找不到问题的正确答案。

我的模型是这样的分层树:

public class MyModel {
public string Name { get; set; }
public Guid Id { get; set; }
public List<MyModel> Children { get; set; }
}

现在我想在这样的 TreeView 中显示它(如果来自 MyModel 类型,则每个条目):
Root
|-SubElement
|-SubElement2
| |-SubSubElement1
|-SubElement3

现在我的问题:
  • 相应的 View-Model 会是什么样子? Collections 是否有引用实现?
  • 模型或 View 模型或两者都应该实现INotifyPropertyChanged , INotifyCollectionChanged或者子列表应该是 ObservableCollection<MyModel> 类型?如果是,何时调用OnPropertyChanged() ?

  • 现在进行显示:

    我想在 TreeView 中显示对象的名称,但是在选择元素时,我希望收到该事件的通知(并获取相应的元素)。 ViewModel 必须以某种方式支持这一点。像持有一个列表(比如 MyModelList )我可以在 XAML 中绑定(bind)的东西,比如:
    <TreeView ...
    ItemsSource="{Binding ElementName=MyModelList, Path=SelectedItem.Name}"

    ... >

    我可以在哪里使用 InputBindingsEventTriggers .

    最佳答案

    尝试使用分层数据模板在 TreeView 中显示树结构

    <Grid>
    <Grid.Resources>
    <HierarchicalDataTemplate ItemsSource="{Binding Children}"
    DataType="{x:Type local:MyModel}">
    <TextBlock Text="{Binding Name}" />
    </HierarchicalDataTemplate>
    </Grid .Resources>
    <TreeView ItemsSource="{Binding MyModelList}"/>
    </Grid>

    浏览此 MSDN 博客以获得更好的理解 - TreeView and HierarchicalDataTemplate, Step-by-Step

    关于c# - 具有分层对象的 MVVM 的引用实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22781177/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com