2012-03-08 14 views
0

ItemsSourceが異なるタイプのノードであるTreeViewがあります。AddInを使用したTreeView

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に伝えることができますか?

+0

何が質問ですか? –

+0

Oups ...修正されました! – Aleks

+0

したがって、新しいノードタイプは異なるアセンブリになります。テンプレートを各ノードタイプのアセンブリで定義するのか、現在のアセンブリで定義するのかを指定する質問を更新できますか? –

答えて

0

各アドインでそれぞれDataTemplateを定義するときは、DataTypeを必ず指定してください。

メインアプリケーションでは、アドインをインポートするときに、アドインからApplication.Current.Resources.Add個のテンプレートを実行する必要があります。次に、WPFでタイプが認識されると、定義されたDataTemplateを使用して自動的に「膨張」されます。

関連する問題