WinRT アプリ (C#) にはList<Item> items
、 にバインドする がありListBox
ます。
Class Item
と の 2 つのフィールドがstring Name
ありbool IsSelected
ます。すでにお分かりのように、IsSelected
フィールドを ListBoxItem の IsSelected プロパティにバインドします。
なぜこれが必要なのですか?SelectedItems
のプロパティを使用しなかったのはなぜListBox
ですか?
- ロードされたばかりのとき
ListBox
、私はすでにいくつかのアイテムを持っています。IsSelected = true
- 選択したすべてのアイテムを保存するために別のコレクションを作成したくありません。
私が探しているものは何ですか?
WPFのように、エレガントなソリューションを探しています:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</ListBox.ItemContainerStyle>
しかし、WinRT がセッターでのバインドをまったくサポートしていないことは誰もが知っています。
Filip Skakunブログの素敵な投稿もチェックしています。これは解決策の 1 つですが、自分でいくつか書く必要があります。BindingBuilder/BindingHelper
そして今、私は私の問題を解決する2つの方法を知っています:
- アイテムの別のコレクションの
SelectedItems
プロパティをバインドして保存します。ListBox
-私はこの方法が好きではありません - Filip Skakunのように実行します。何も見つからない場合は、これを使用します。
理想的な状況では、これにネイティブソリューションを使用したい、または誰かがBindingBuilder
私の状況に合わせてネストされたものを既に作成/テストしている可能性があります-それも役に立ちます。