1

現在、WPF TreeListView を作成しています。私はいくつかのことを疑問に思っていました。

階層データ構造はどのように機能し、子は親と同じプロパティではなく他のプロパティを表示できますか? 現在、列でツリーリストビューを作成しようとしています

クライアント/案件/時間

私がクライアントを追加し、同じ問題がある場合、親はその時間を合計時間から子供が合計した合計時間に変更します。

これが例です

私は追加します

ジョン / 筆記用紙 / 1 時間
ジョン / 筆記用紙 / 2 時間
ジョン / 筆記用紙 / .5 時間

私のツリーリストビューが表示されます

ジョン / 筆記用紙 / 3.5 時間 < これは親です
- ジョン / 筆記用紙 / 1 時間
- ジョン / 筆記用紙 / 2 時間
- ジョン / 筆記用紙 / .5 時間 < これらは子です

代わりに私はそれを見せたい

John / Writing Paper/ 3.5 時間
- 午前 12:00 - 午後 1:00 / 序論を書いた
- 午後 2:00 - 午後 4:00 / 本文を書いた
- 午後 3:00 - 午後 3:30 / 結論を書いた

私は2つの監視可能なコレクションを使用しています。1 つは親で、もう 1 つは子です。

私の質問は基本的にです。階層データ構造を変更して別のプロパティを表示できますか? 異なる情報。同じ Client Matter Hours を何度も表示したくありません。代わりに、子にさまざまなプロパティを表示したいと思います。親は情報が誰に属しているかを示すためです。ところで、私はこれをXAMLとC#でやろうとしています

前もって感謝します!!
-ケビン

4

2 に答える 2

1

親と子のオブジェクト タイプが異なる場合、非常に簡単な答えがあります。ResourceDictionary で複数の HierarchicalDataTemplates を使用するだけです。

<TreeView ItemsSource="{Binding Parents}">

  <TreeView.ResourceDictionary>

    <HierarchicalDataTemplate
        TargetType="{x:Type my:ParentType}"
        ItemsSource="{Binding Children}">

      ... parent content ...

    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate
        TargetType="{x:Type my:ChildType}"
        ItemsSource="{Binding Children}">

      ... child content ...

    </HierarchicalDataTemplate>

  </TreeView.ResourceDictionary>
</TreeView>

この手法はすべてのシナリオで機能するわけではありませんが、機能する場合は非常に強力で表現力豊かです。

親と子が同じ型であるが異なるパラメーターを持つ場合の別のバリエーションは、データ値に応じて適切な名前をロードするためItemTemplateSelectorに呼び出す を作成することです。LoadResource()HierarchicalDataTemplate

于 2009-11-17T05:49:05.480 に答える
1

HierarchicalDataTemplate に DataTrigger を設定し、異なるプロパティ バインディングを使用できます。以下はほんの一例です。さらにアイデアが必要な場合に備えて、このスレッドの以前の回答を確認してください。

 <HierarchicalDataTemplate  DataType="{x:Type local:Person}" ItemsSource="{Binding People}" >
    <Grid>
      <TextBlock x:Name="fName" Text="{Binding FirstName}"/>
      <TextBlock x:Name="lName" Text="{Binding LastName}" Visibility="Collapsed"/>
   </Grid>
   <HierarchicalDataTemplate.Triggers> 
    <DataTrigger Binding="{Binding State}" Value="A">
      <Setter TargetName="fName" Property="Visibility" Value="Collapsed"/>
       <Setter TargetName="lName" Property="Visibility" Value="Visible"/>
    </DataTrigger>
  </HierarchicalDataTemplate.Triggers> 
</HierarchicalDataTemplate>  

ジョビ・ジョイ

于 2009-11-16T22:25:55.703 に答える