最終更新:ID:mAmGC2NECQ 2010年08月17日(火) 01:51:10履歴
通常はItemsSourceに選択肢としてリストを登録し、
選択されたアイテムはSelectedItemで取り出す。
たとえば、以下のような一人分の個人情報を表すPersonDataクラスがあったとして、
以下のように、選択肢となるリストと結果を入れるためのプロパティがあるとする。
ただし、リストの選択されたアイテムそのものではなく、選択されたアイテムの1つのプロパティが欲しい場合がある。
PersonDataそのものではなく、そのIDだけ取得できればいい場合など。
SelectedValue="{Binding Path=SelectedId}"の記述があることで、SelectedIdプロパティに選択オブジェクトのIdを取得できる。
ちなみに、この例のようにDisplayMemberPathを指定することにより、選択肢としてToString()値ではなくLastNameプロパティが表示される。
選択されたアイテムはSelectedItemで取り出す。
たとえば、以下のような一人分の個人情報を表すPersonDataクラスがあったとして、
class PersonData { public long Id { get; set; } public string LastName { get; set; } public string FirstName { get; set; } public override string ToString() { return FirstName + " " + LastName; } }DataContextとして登録されているクラスには
以下のように、選択肢となるリストと結果を入れるためのプロパティがあるとする。
public List<PersonData> AllPersonData { get; private set; } public PersonData SelectedData { get; set; } public long SelectedId { get; set; }この場合は、ComboBoxを以下のように書くことによって、選択結果をSelectedDataに得ることができる。
<ComboBox ItemsSource="{Binding Path=AllPersonData}" SelectedItem="{Binding Path=SelectedData}"/>ちなみにDisplayMemberPathを指定していないので、ToString()した値が各選択肢を表す値としてComboBoxに表示される
ただし、リストの選択されたアイテムそのものではなく、選択されたアイテムの1つのプロパティが欲しい場合がある。
PersonDataそのものではなく、そのIDだけ取得できればいい場合など。
<ComboBox ItemsSource="{Binding Path=AllPersonData}" DisplayMemberPath="LastName" SelectedValuePath="Id" SelectedValue="{Binding Path=SelectedId}"/>SelectedValuePath="Id"を指定することにより、選択されたオブジェクトのIdプロパティがSelectedValueに入るようになる。
SelectedValue="{Binding Path=SelectedId}"の記述があることで、SelectedIdプロパティに選択オブジェクトのIdを取得できる。
ちなみに、この例のようにDisplayMemberPathを指定することにより、選択肢としてToString()値ではなくLastNameプロパティが表示される。
コメントをかく