WPF привязка данных к TreeView из кода позади - PullRequest
0 голосов
/ 29 июня 2018

, поэтому у меня есть 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 (показан ниже), который имеет строку типа. А в другом случае я хочу отобразить список CANMessages класса CAN, и для каждого элемента сообщения я хочу установить список сигналов, который он содержит в качестве подэлементов (что реализовано в примере 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 для каждого сценария. Но я хочу сделать это в коде позади, потому что кажется, что он требует меньше кода, чем реализация HierarchicalDataTemplate в XAML для каждого сценария. Есть ли способ это сделать?

1 Ответ

0 голосов
/ 29 июня 2018

Если я правильно понял, вы можете использовать Interface, чтобы заставить это работать.

Аналогичный вопрос: wpf Treeview с тремя уровнями в

...