5

DataTemplateで を使用してデータItemsControlのセットを表示しようとしています。セットItemsPanelはサイズ 3 x 3 の均一なグリッドです。 のItemsSourceは、検索語に基づいてソース コレクションをフィルタリングItemsControlする にバインドするように設定されています。CollectionViewSourceこれはすべてうまくいきます。

私がバインドしているリストは任意のサイズですが、9つの結果のみを表示したいのですが、私の人生では次のいずれかを行うことができません: a)最初の9つのアイテムを出力するように
制限する b)を 3 x 3 のみに制限し、新しい行を作成しない c)一度に 9 つのデータ テンプレートしか作成できないように制限する。CollectionViewSource
UniformPanel
ItemsControl

これは一般的なデータバインディングのシナリオであると確信しているため、本当に頭を悩ませていますが、ウェブ上でそれについて何も見つけることができません。

4

3 に答える 3

4

私が考えることができる2つの解決策:

ビュー モデルを使用している場合は、そこにロジックを配置して、9 つの要素しか持たないバインド可能なプロパティを作成します。9 つを超える要素がコレクションに忍び込まないように、単体テストが行​​われていることを確認してください。

または、項目ソースをバインドするときにコンバーターを使用して、完全なリストを最初の 9 つの縮小リストに変換することもできます。

于 2009-12-16T14:06:53.633 に答える
2

これは、(まだ) XAML で実行できないことの 1 つにすぎません。

CollectionViewSource が更新されるたびに更新される "CollectionViewSourceView" (:P) を作成して、最初の 9 項目のみを出力することができます。それでも、これはコード ビハインド (より良いのはビューモデル) です。

于 2009-12-16T14:00:01.303 に答える
1

James Hay (コンバーターを使用) と同じことを言おうとしていましたが、XAML で ConverterParameter をデータバインドして、返されるアイテムの数を動的に指定できることも付け加えておきます。

于 2009-12-16T14:08:42.223 に答える