WPF将数据从后面的代码绑定到TreeView

时间:2018-06-29 07:58:10

标签: c# wpf data-binding treeview code-behind

所以我有一个很好的treeView。但是我的问题是我想显示不同类型的不同树,而不必为XAML中的每种情况创建一个树。我知道如何从后面的代码中设置listView的内容,treeView是否可能?我的treeView现在看起来如下所示,但显然仅适用于CAN消息类型的项目:

<TreeView TreeViewItem.Selected="OnItemSelected" MouseDoubleClick="Tree_MouseDoubleClick" Name="tree">
<TreeView.Resources>
    <HierarchicalDataTemplate DataType="{x:Type srcM:CANMessage}" ItemsSource="{Binding Signals}">
        <StackPanel Orientation="Horizontal" >
            <TextBlock Text="{Binding Name}"/>
            <TextBlock Text=" (0x"/>
            <TextBlock Text="{Binding CANid}"/>
            <TextBlock Text=")"/>
        </StackPanel>
  </HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>

问题是我有不同的情况。例如,我只想显示类型字符串的ADTF类的信号列表(如下所示)。 在另一种情况下,我想显示CAN类的CANMessages列表,对于每个消息元素,我想要设置它包含为子元素的信号列表(在XAML示例中实现)。我有以下课程的简短版本:

public class ADTF : ISignalSource
{   
    public string Id { get; set; }
    public List<string> Signals { get; set; }
}

public class CAN: ISignalSource
{   
    public string Id { get; set; }
    public List<CANMessage> Signals { get; set; }
}
 public class CANMessage
{   
    public string Id { get; set; }
    public List<string> Signals { get; set; }
}

所以我认为我需要做的是为每种情况创建一个HierarchicalDataTemplate。但我想在后面的代码中执行此操作,因为与在每种情况下在XAML中实现HierarchicalDataTemplate相比,它花费的代码更少。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则可以使用Interface来使它正常工作。

类似的问题: wpf Treeview with three levels in