8

メタデータでソートされたさまざまなアイテムを表示することを担当する ItemsControl を作成しようとしています。各アイテムには複数のメタデータを含めることができます。たとえば、「会話」タイプのアイテムには、「チャプター」、「アクト」、および「ボリューム」メタデータを含めることができます。

グループ化が WPF でどのように機能するかを調べたところ、GroupStyles と PropertyGroupDescription クラスについて知りました。

PropertyGroupDescription から継承し、「Metadata」タイプのオブジェクトを返す独自のクラスを作成しました。

とにかく、ItemsControl の GroupStyle DataTemplate で、返されたオブジェクト (つまり、「メタデータ」オブジェクト) にバインドし、そのプロパティを希望どおりに表示できるということはありますか? または、「名前」にバインドする必要がありますか?

言い換えると:

<ItemsControl.GroupStyle>
    <GroupStyle>
        <GroupStyle.HeaderTemplate>
            <DataTemplate>
                  Am I forced to bind to "Name" here ?
            </DataTemplate>
        </GroupStyle.HeaderTemplate>
    </GroupStyle>
</ItemsControl.GroupStyle>
4

2 に答える 2

16

デフォルトDataContextでは、このCollectionViewGroup PropertiesGroupStyleにバインドできます。もちろん、必要に応じて他のものを設定することもできます。BindingSource

グループ内の最初のオブジェクトが必要な場合は、次を使用します。

<TextBlock Text="{Binding Path=Items[0].YourStringProperty}" />
于 2012-04-19T19:49:00.160 に答える
0

デフォルトでは、カスタムオブジェクトへのバインドを行う場合、ToString() メソッドを使用して表示を試みますが、名前ではありません (まあ、ToString() はデフォルトで名前を出力します)。ToString() メソッドをオーバーライドして別のものを印刷することができます。私の言いたいことがわかるでしょう。

もちろん、独自の DataTemplate を定義して、別のプロパティにバインドすることもできます。

<DataTemplate>
<TextBlock Text="{Binding XXXXX}"/>
</DataTemplate>
于 2012-04-19T18:56:05.490 に答える