代码之家  ›  专栏  ›  技术社区  ›  Smallestearth

要绑定到单个数据模板中的不同类型的treeview项[关闭]

  •  -1
  • Smallestearth  · 技术社区  · 7 年前

    我有一个基于MVVM的用户控件。该模型有两个类,一个类有一个类型列表,另一个类如 模型 在下面问题是 我有两个为我的treeview定义了两个不同的hierarchicaldatatemplates,它们也绑定到了错误的模型

    ||人名

    代码相当大,所以我取了一些片段。如果需要更多信息,请告诉我:

    public class Family
    {
    private string m_Name;
    public string NameOfFamily
        {
            get { return m_Name; }
            set { m_Name= value; }
        } 
        public ObservableCollection<Person> Persons{ get; set ; }
    }
    
    public class Person
    {
    private string m_Name;
    public string NameOfPerson
        {
            get { return m_Name; }
            set { m_Name= value; }
        } 
    
    }
    

    在viewmodel中,我收到了家庭及其各自的人,例如:。

    Family Fam = GetFamilywithrespectivepersons;
    

    看法

    <TreeView Name="myTreeView" Grid.Column="0" Width="Auto" Height="300" ItemsSource="{Binding Fam}">
       <TreeView.Resources>
          <HierarchicalDataTemplate  DataType="{x:Type classes:Family}" ItemsSource="{Binding Persons}">                      
                            <TreeViewItem Header="{Binding NameOfFamily}"></TreeViewItem>                                             
           </HierarchicalDataTemplate>
           <HierarchicalDataTemplate  DataType="{x:Type classes:Person}">                                                
                            <TreeViewItem Header="{Binding NameOfPerson}"></TreeViewItem>                                                                 
            </HierarchicalDataTemplate>
     </TreeView.Resources>
    </TreeView>
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   mm8    7 年前

    DataTemplate 每种类型。但是自从 Person 数据模板

    TreeViewItem 元素:

    <TreeView Name="myTreeView" Grid.Column="0" Width="Auto" Height="300" ItemsSource="{Binding Fam}">
        <TreeView.Resources>
            <HierarchicalDataTemplate  DataType="{x:Type classes:Family}" ItemsSource="{Binding Persons}">
                <TextBlock Text="{Binding NameOfFamily}" />
            </HierarchicalDataTemplate>
            <DataTemplate DataType="{x:Type classes:Person}">
                <TextBlock Text="{Binding NameOfPerson}" />
            </DataTemplate>
        </TreeView.Resources>
    </TreeView>