[解決済み] SelectedItem、SelectedValue、SelectedValuePathの違いについて
質問
以下の違いは何ですか。
これらの依存関係のプロパティはすべて
セレクタ
クラスがあります。よく混同するのが
SelectedItem
と
SelectedValue
であり、かつ
SelectedValue
と
SelectedValuePath
.
その違いや、どのような場合に使うのか知りたいのですが、特に
SelectedValue
と
SelectedValuePath
. その
使用
を、簡単な例とともに紹介します。
解決方法は?
名前はちょっとわかりにくいかもしれませんね :). 以下はその要約です。
-
は 選択された項目 プロパティは、リストがバインドされているオブジェクト全体を返します。 例えば、リストが
Category
オブジェクト(各カテゴリオブジェクトはNameとIDのプロパティを持つ)。ObservableCollection<Category>
. そのSelectedItem
プロパティは、現在選択されているCategory
オブジェクトを作成します。 なぜなら、これはカテゴリオブジェクト全体をリストがバインドされているプロパティにバインドすることを可能にするだけで、そのカテゴリオブジェクトの単一のプロパティの値 (例えばID
というプロパティがあります。) -
したがって、私たちは 選択された値のパス プロパティと 選択された値 プロパティをバインディングの代替手段として使用することができます(これらは互いに組み合わせて使用します)。 例えば
Product
オブジェクトにバインドされています (ProductName や Weight などのプロパティがあります)。 またCategoryID
プロパティがあり、ユーザーがカテゴリ一覧から商品のカテゴリを選択できるようにしたいとします。 この場合、Category オブジェクトの ID プロパティをCategoryID
プロパティを指定します。 ここでSelectedValuePath
とSelectedValue
プロパティが登場します。 Category オブジェクトの ID プロパティを、リストがバインドされている Product オブジェクトのプロパティに割り当てるには、次のように指定します。SelectedValuePath='ID'
をバインドし、さらにSelectedValue
プロパティをDataContext (つまりProduct)上のプロパティに設定します。
以下の例では、これを実証しています。 コンボボックスが、(ItemsSourceを介して)カテゴリのリストにバインドされています。 選択された値として、Product の CategoryID プロパティをバインドしています (SelectedValue プロパティを使用します)。 SelectedValuePathプロパティを使って、これをCategoryのIDプロパティに関連付けます。 そして、DisplayMemberPathプロパティで、NameプロパティだけをComboBoxに表示させると言っています)。
<ComboBox ItemsSource="{Binding Categories}"
SelectedValue="{Binding CategoryID, Mode=TwoWay}"
SelectedValuePath="ID"
DisplayMemberPath="Name" />
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
}
public class Product
{
public int CategoryID { get; set; }
}
最初はちょっとわかりにくいですが、これで少しはわかりやすくなったかな... :)
クリス
関連
-
WPFバインディング(データバインディング)の使用方法
-
[解決済み] WPFの場合、x:Name属性とName属性の違いは何ですか?
-
[解決済み] WPFのStaticResourceとDynamicResourceの違いは何ですか?
-
[解決済み] SelectedItem、SelectedValue、SelectedValuePathの違いについて
-
[解決済み】ListBoxとListViewの違いは何ですか?
-
[解決済み] ユーザーコントロールライブラリーとカスタムコントロールライブラリーの違いは何ですか?
-
[解決済み] バインディングConverterParameter
-
[解決済み] Generic.xamlの特徴とは?
-
[解決済み] MVVMテンプレートの好例
-
[解決済み] レンダリング時間やパフォーマンスの面で最も効率的なパネルはどのような順番になりますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Windows 8 ランタイム(WinRT / Windowsストアアプリ / Windows 10 ユニバーサルアプリ)とSilverlightやWPFの比較はどうですか?[クローズド]
-
[解決済み] WPFのテキストラップとWrapWithOverflowの比較
-
[解決済み] WPF TemplateBindingとRelativeSource TemplatedParentの比較
-
[解決済み] WPF:幅(と高さ)をパーセント値で設定する
-
[解決済み] MVVMテンプレートの好例
-
[解決済み] Prism for WPFとは?
-
[解決済み] グリッドカラムの幅・高さを設定する際の「Auto」と「*」の違いは何ですか?
-
[解決済み] ItemsControlの仮想化?
-
[解決済み] レンダリング時間やパフォーマンスの面で最も効率的なパネルはどのような順番になりますか?
-
[解決済み] 読み取り専用のGUIプロパティをViewModelにプッシュバックする