2012-03-08 28 views
0

我有一個TreeView與ItemsSource是來自不同類型的節點。TreeView與AddIn

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> 

我想要做的是有附加系統。在不同的程序集中,我想定義將繼承節點的類型或某些情況下的文件夾。我希望這些新類型在TreeView中有自己的佈局。其中一些可能有多個複選框或進度條。這些新類型的xaml應該是定義類型的程序集的一部分。

我該如何在運行時告訴TreeView什麼模板用於這些新的節點類型?

+0

有什麼問題? – 2012-03-08 22:25:02

+0

Oups ...更正! – Aleks 2012-03-08 22:55:30

+0

因此,新的節點類型將在不同的程序集中。你能否更新問題來指定是否要在當前程序集內的每個節點類型的程序集或OR中定義模板? – 2012-03-09 15:03:45

回答

0

在每個加載當你定義每個DataTemplate,確保指定DataType

在您的主應用中,當您導入加載項時,您需要從加載項中執行Application.Current.Resources.Add模板。然後,當WPF看到一個類型時,它將使用定義的DataTemplate自動「膨脹」。