コードビハインドで操作する場合はWinFormsとほぼ変わらない感じで実装できる。DataSourceがItemsSoueceになる程度。
// Window_Loadedなど
var result = lc.MstPrefectures.OrderBy(id => id.Id);
// ItemsSourceに直接セットする場合
ComboPref.DisplayMemberPath = "Pref";
ComboPref.SelectedValuePath = "Id";
ComboPref.ItemsSource = result.ToList();
ViewModelを使用する場合はObservableCollectionを使用すると内容変更で通知が発行される。Listなどを使うと内容変更での通知がされないので注意。
ObservableCollectionにはAddRangeがないのでforeachで回している。Removeも同様。全アイテム削除をするばあいはClearを使用する。
// ViewModel
private ObservableCollection<MstPrefecture> _comboPrefItems = new ObservableCollection<MstPrefecture>();
public ObservableCollection<MstPrefecture> ComboPrefItems
{
get
{
return _comboPrefItems;
}
set
{
SetProperty(ref _comboPrefItems, value);
}
}
// コンストラクタ
VM = new EditWindowViewModel();
DataContext = VM;
// Window_Loadedなど
// ViewModelにコレクションを用意している場合
var result = lc.MstPrefectures.OrderBy(id => id.Id);
foreach (var item in result)
{
VM.ComboPrefItems.Add(item);
}
コメント