0

こんにちは、私は 3 つのノードを持つ WPF TreeView を持っています。最後の子 (3 番目のノード) に、バインドされたデータが取り込まれた ListView を含めたいと思います。私が直面している問題は、HierarchicalDataTemplate の ItemTemplate に ListView を配置すると、コンテンツを含む単一の ListView ではなく、子ごとに ListView が取得されることです。これはドキュメントによると予想される動作ですが、回避策 (ItemContainerStyle を変更する可能性があります) を探しています。残念ながら、私は TreeViewItem のコントロール テンプレートの経験が事実上ないか、一般に TreeView の経験があまりありません。

私は TreeListView を使用する可能性を見てきましたが、それは私のユースケースには合いませんし、別のコントロールをバインドしてそのようにデータを表示することもできません。

ListView を TreeViewItem に挟むという頭痛の種をすでに経験した人はいますか、またはこれを達成するために ControlTemplate を変更する方法を誰かが提案できますか?

ありがとう、アジ

4

2 に答える 2

0

Listview を持つノードは、他の 2 つのノードとは異なるデータ型である必要があるため、Treeview で異なる方法で処理できます。また、ツリービューによって認識される他の子要素がないため、リストビューデータを含む子HierarchicalDataTemplateは通常のものではないようです。DataTemplateHierarchicalDataTemplate と通常の DataTemplates を Treeview で自由に組み合わせて使用​​できます。通常の DataTemplates は「リーフ」ノードを表し、子はありません。

Treeview で使用されるさまざまなデータ型のサンプルですが、階層テンプレートを使用しています。

<HierarchicalDataTemplate DataType="{x:Type FooNormal}" ItemsSource="{Binding TreeviewChildNodeCollection}">
   // do something else here.
</HierarchicalDataTemplate>

<HierarchicalDataTemplate DataType="{x:Type FooList}" ItemsSource="{Binding TreeviewChildNodeCollection}">
  <ListView  ItemsSource="{Binding ListviewChildNodeCollection}">
   //use listview here
  </ListView>
</HierarchicalDataTemplate>
于 2010-11-30T17:43:27.640 に答える
0

この状況に対処する最も簡単な方法は、2 番目のノードの HierarchicalDataTemplate を Expander に置き換え、HierarchicalDataTemplate ではなく ListView に ItemsSource を設定し、Expander のボタンを TreeViewItem のボタンのようにスタイル変更することです。 ...一種のハックですが、機能します:)

ご協力ありがとうございました。

アジ

于 2010-12-01T14:44:56.053 に答える