0

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

クラス

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

ItemsControlがバインドするリストはList<BaseType>

XAML

<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>

これで、TypeBオブジェクトプロパティにあるすべてのTypeAオブジェクトがItemsControlに表示されるようになります。代わりに、HierarchicalDataTemplateに定義されたスタイルで表示されるTypeBオブジェクトのみが表示されます。TreeViewコントロールで同じデータテンプレートを使用しました。ここでは、子アイテムが正常に表示されます。

  • ItemsControlでHierarchicalDataTemplateを使用できませんか?
  • ItemsControlに親子関係を表示するにはどうすればよいですか?
4

1 に答える 1

1

TreeViewコントロールのテンプレート化と操作を検討するか、階層データを操作するための独自のコントロールを構築する必要があります。

状況によっては、ネストされたコントロールがアイテムにバインドされる通常のアイテムコントロール用に、(psuedo)などの独自のデータテンプレートを設計できる場合があります。

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

上記のコードを試したことがない

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

于 2009-08-06T04:11:12.183 に答える