2009-08-03 24 views
0

私は、この構造に従うオブジェクトを含むリストを持っています。これは私が実際に働いているクラスではありませんが、その概念を説明する必要があります。WPF HierarchicalDataTemplate&ItemsControl

クラス

public class BaseType{} 
public class TypeA : BaseType{} 
public class TypeB: BaseType 
{ 
    public List<TypeA> TypeAList { get; private set; } 
} 

のItemsControlが結合リストに私が見ることを期待するものを

<ItemsControl> 
    <ItemsControl.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type local:TypeB}" ItemsSource = "{Binding Path=TypeAList}"> 
      <DataTemplate.Resources> 
       <Style TargetType="TextBlock"> 
        <Setter Property="FontSize" Value="18"/> 
        <Setter Property="HorizontalAlignment" Value="Center"/> 
       </Style> 
      </DataTemplate.Resources> 
      <Grid> 
       <Ellipse Fill="Gold"/> 
       <StackPanel> 
        <TextBlock Margin="3,3,3,0" 
     Text="{Binding Path=Description}"/> 
        <TextBlock Margin="3,0,3,7" 
     Text="{Binding Path=Name}"/> 
       </StackPanel> 
      </Grid> 
     </HierarchicalDataTemplate> 
    <ItemsControl.Resources> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel></StackPanel> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

List<BaseType>

XAMLのすべてのタイプAのオブジェクトですIteに表示されるTypeBオブジェクトのプロパティに見つかりましたmsControlではなく、HierarchicalDataTemplate用に定義されたスタイルで表示されるTypeBオブジェクトのみが表示されます。私はTreeViewコントロールで同じデータテンプレートを使用しました。そこでは、子アイテムをうまく表示します。

  • ItemsControlでHierarchicalDataTemplateを使用できませんか?
  • ItemsControlに親子関係を表示するにはどうしたらいいですか?

答えて

1

実際にテンプレートを調べてTreeViewコントロールを操作するか、階層データを操作する独自のコントロールを作成する必要があります。

いくつかの状況で

、あなたがそのような(擬似)として、そのネストされたコントロールの項目にバインドコントロールする定期的なアイテムのために独自のデータテンプレートを設計することができるかもしれ

<HierarchicalDataTemplate> 
    <Grid DataContext="{Binding}"> 
     <ListBox ItemsSource="{Binding TypeAList}" /> 
    </Grid> 
</HierarchicalDataTemplate> 

は、コードを試していません

上方制御はHierarchicalDataTemplateを認識する必要がある - 上記の例では、制御は、単にのDataTemplate(HierarchicalDataTemplateのスタイルを簡単にし、そのデータテンプレートのたDependencyPropertyの型のためのDataTemplateから派生)として使用されます。

関連する問題