2011-01-31 15 views
0

のは、私はこのような何かを持っているとしましょう:WPFのツリービューのDataTemplate

public class TopicFolder 
    { 
     #region Constants and Fields 

     private readonly List<TopicInfo> folderContent; 

     private readonly List<TopicFolder> subFolders; 

     #endregion 

... 
    } 

どのように私は、このようなタイプのデータテンプレートを実装していますか?現在私は持っています:

<HierarchicalDataTemplate DataType="{x:Type local:TopicFolder}" ItemsSource="{Binding SubFolders}" > 
      <TextBlock Text="{Binding Name}"/> 
     </HierarchicalDataTemplate> 
     <HierarchicalDataTemplate DataType="{x:Type local:TopicInfo}" ItemsSource="{Binding FolderContent}"> 
      <TextBlock Text="{Binding TopicName}"/> 
     </HierarchicalDataTemplate> 

しかし、これはフォルダの内容を示していません。 2番目のテンプレートのデータ型はローカルである必要があります:TopicFolder、これはWPFでは許可されていません。

提案がありますか?

UPD:

ItemsSource="{Binding Path=Folders}" 

P.S:TreeViewコントロールは、この方法のObservableCollection < TopicFolder>にバインドされていることは間違いなく、プライベート/パブリック/性質の問題ではありません。投稿されたフィールドに対応する公開プロパティがあります。出力にバインディングエラーはなく、FolderContent項目を表示していないだけです。

+0

正確にあなたのエラーメッセージは何ですか? –

+0

ですが、プライベートフィールドをカプセル化するプロパティがありませんか? –

+0

エラーメッセージが表示されない(「出力」に何も見つかりません) –

答えて

1

編集:

サブフォルダと1がMultiBindingを使用するか、またはあなたがフォルダやコンテンツは、特定の順序で表示されることを気にしない場合、私はcomposite patternを使用してお勧めしたいコンテンツの両方を表示するにはSubFoldersとFolderContentを削除し、それを複合インターフェースを実装するオブジェクトのコレクションに置き換えてください(wiki記事を読んでください)。

2つのコレクションを結合するためのプロパティを作成してバインドすることはできません。

合成パターンの例:

public interface ITopicComposite 
{ 
    // <Methods and properties folder and content have in common (e.g. a title)> 

    // They should be meaningful so you can just pick a child 
    // out of a folder and for example use a method without the 
    // need to check if it's another folder or some content. 
} 

public class TopicFolder : ITopicComposite 
{ 
    private readonly ObservableCollection<ITopicComposite> children = new ObservableCollection<ITopicComposite>(); 
    public ObservableCollection<ITopicComposite> Children 
    { 
     get { return children; } 
    } 

    //... 
} 

public class TopicInfo : ITopicComposite 
{ 
    //... 
} 
+0

投稿したことを忘れました –

+0

私はこの問題が他の場所にあると大いに疑っています。教えてください。 –

+0

多分...しかし、私はデバッグ中に見ることができるように、FolderContentは常に正しく設定されています、私は空ではないことを意味...私は2番目のテンプレートがちょうど無効だと思った... –

関連する問題