У меня есть TreeView с ItemsSource, являющимся узлами разных типов.
class Node
class Folder : Node
class Project : Folder
Все 3 класса определены в основном проекте. И xaml, который я сейчас использую, выглядит так:
<TreeView Name="ProjectTreeView" SelectedItemChanged="ProjectTreeView_SelectedItemChanged">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type prj:Project}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type prj:Folder}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type prj:Node}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
Что я хочу сделать, так это иметь систему надстроек. В разных сборках я хочу определить типы, которые будут наследовать Node или, в некоторых случаях, Folder. И я хочу, чтобы эти новые типы имели собственный макет в TreeView. Некоторые из них могут иметь несколько флажков или индикатор выполнения. XAML для этих новых типов должен быть частью сборок, в которых определены типы.
Как я могу во время выполнения сказать TreeView, какой шаблон использовать для этих новых типов узлов?