[WPF] ComboBoxをItemsSourceとSelectedItemで扱う時の注意

2019/06/13 再度試してみたら問題なく初期値が設定されました


SelectedItem で初期値を設定する場合には SelectedItem を先に設定してから ItemsSource を変更しないと初期値が設定されない場合があるようです。

味気ないので、雰囲気コード(実際には動かない)置いておきます。

こんなコンボボックスを作って

<ComboBox
  ItemsSource="{Binding Items}"
  SelectedItem="{Binding SelectedItem}"
  DisplayMemberPath="Name"
/>

ViewModel部分

public class ViewModel : INotifyPropertyChanged {
	public List<Item> Items { get; set; }	// 変更通知
	public Item SelectedItem { get; set; }	// 変更通知
	
	public void ChangeComboBox(){
		// これだとダメ
		//this.Items = new List<Item>(){ 
		//		new Item(){ Name = "1" },
		//		new Item(){ Name = "2" },
		//		new Item(){ Name = "3" },
		//	};
		//this.SelectedItem = this.Items.First();

		var items = new List<Item>(){
				new Item(){ Name = "1" },
				new Item(){ Name = "2" },
				new Item(){ Name = "3" },
			};
		this.SelectedItem = items.First();
		this.Items = items;
	}
}

public class Item {
	public string Name { get; set; }
	public int Value { get; set; }
}