通常はItemsSourceに選択肢としてリストを登録し、
選択されたアイテムは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プロパティが表示される。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

どなたでも編集できます