2

階層表示でIListをWPFTreeViewにバインドしようとしています。これが私のオブジェクトです:

public class TeamsTreeViewItem
 {
  public string DisplayValue { get; set; }
  public string KeyValue { get; set; }

  readonly List<TeamsTreeViewItem> children = new List<TeamsTreeViewItem> ();

  public IList<TeamsTreeViewItem> Children
  {
   get
   {
    return children;
   }
  }

  public override string ToString ()
  {
   return DisplayValue;
  }
 }

特定のオブジェクトに何人の子供がいるのかわかりません。子供にも子供がいる可能性があります。

HierarchialDataTemplateをいじっていますが、成功していません。

    <TreeView Canvas.Left="263" Canvas.Top="12" Height="200" Name="TeamTreeView" Width="120">
        <TreeView.Resources>
            <HierarchicalDataTemplate  DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding DisplayValue}" >
                <TextBlock Text="{Binding DisplayValue}"/>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate  DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding Children}" >
                <TextBlock Text="{Binding DisplayValue}"/>
            </HierarchicalDataTemplate>
        </TreeView.Resources>
    </TreeView>

助言がありますか?

4

1 に答える 1

1

次のように、ItemsSourceを子に適用する必要があります。

<HierarchicalDataTemplate DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding Path=Children}">
    <TextBlock Text="{Binding DisplayValue}"/>
</HierarchicalDataTemplate>

このDataTemplateをDataTypeに基づいて適用しました。これにより、子が同じタイプ(TeamsTreeViewItem)の場合、子、孫、または来孫であっても、そのタイプで見つかったすべてのアイテムに自動的に適用されます。 ...孫。TeamsTreeViewItemが定義されている名前空間(ここでは「ローカル」と表記)を必ず含めてください。

于 2010-12-16T00:00:19.577 に答える