標準的な問題を解決することを目的としたWPFアプリを作成しています。私はWPFとMVVMのパターンに本当に慣れていないので、インターネットでMVVMへのさまざまなアプローチをたくさん読んだ後、頭の中で少し混乱しています。DataGridのitemsource更新操作の簡単な操作がMVVMにとってどのように「慣用的」であるかを知りたいです。
1つのデータグリッドと1つのコンボボックスがあるとしましょう。コンボには、すべてのコーチのリストが含まれています。データグリッドには、選択したコーチによってトレーニングされたすべてのスポーツマンが表示されるため、コンボはデータグリッド内のデータのフィルターのように機能します。
<ComboBox ItemsSource="{Binding ListCoach}" DisplayMemberPath="last_name" SelectedValue=
"{Binding SelectedCoach}" SelectedValuePath="Id"/>
<DataGrid ItemsSource="{Binding Path=ListSportsman}" ..... </DataGrid>
私のViewModelクラスは、SelectedCoachプロパティのセッターでDataGridのコンテンツを変更します(このプロパティはComboboxの値のターゲットです):
private int _selectedCoach;
public int SelectedCoach
{
get { return _selectedCoach; }
set
{
_selectedCoach = value;
ListSportsman = new ObservableCollection<sportsmanset>(_serviceAgent.ListSportsmanOfCoach(value));
NotifyPropertyChanged(vm => vm.SelectedCoach);
}
}
そのようなコードは臭いがしませんか?または、SelectedCoachプロパティの変更をサブスクライブし、ListSportsmanを別の関数に設定する方が適切ですか?(ちなみに、NotifyPropertyChangedイベントを手動でサブスクライブする方法は?)