6

いくつかのデータを表示するためにWPFで作成したカスタムユーザーコントロールがあります。このユーザーコントロールをリストに表示したいのですが、ユーザーがユーザーコントロールに含まれるプロパティで並べ替えられるように、複数の列ヘッダー(ユーザーコントロールの一部のプロパティに一致)も提供したいと思います。

私はこれについて行くための最良の方法がわかりません。

現在、これらのユーザーコントロールを表示するリストボックスがありますが、リストボックスにはヘッダーがなく、リストボックスに複数のヘッダーを配置する方法がわかりません。

理想的には、次のようなものが欲しいです。

Header1   Header2  Header3   Header4
[UserControlThatSpansAllFourColumns]

私の他の考えは、DataGridを使用して、各アイテムを複数の列にまたがらせることでしたが、これまでのところ、どちらも理解できません。

誰かが何かヒントがあれば、私はそれらを歓迎します!

4

1 に答える 1

3

わかりました。これはどのような場合でも「最善の方法」ではありませんが、これを投入するだけです。必要な方法の1つ<ContentPresenter>は、デフォルトの代わりにを使用するカスタムItemContainerStyleでListViewを使用することです<GridViewRowPresenter>。この短いXAMLは、これをいくらか示しています。

<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                        <ContentPresenter/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Header1"/>
            <GridViewColumn Header="Header2"/>
        </GridView>
    </ListView.View>

    <Button>Item1</Button>
    <Button>Item2</Button>

</ListView>

ここでは、列ヘッダーを取得し、アイテムはリストビュー全体にまたがっています。ただし、このソリューションでは、アイテムのレンダリングは独自の世界にあります。ListView用に定義された列には実際には接続されていません。<RowPresenter>したがって、これをより適切に機能させる1つの方法は、親リストビューで定義されたGridViewColumnsを実際に考慮した独自の実装を提供することだと思います。

とにかく、これが何らかの形で役立つことを願っています。

于 2010-09-24T21:08:21.683 に答える