INotifyPropertyChanged を実装するモデルに変換する DataTable があります。
これは、チェックボックスを含むリストボックスにバインドされます。チェックボックスがチェックされると、PropertyChanged イベントが発生します。DataTable にバインドされた DataGrid があるため、これを処理したいと考えています。チェックされた項目に基づいてその DataTable をフィルター処理したいと思います。
MainWindow.xaml.cs の PropertyChange イベントをサブスクライブしたいのですが、モデルのコンストラクターにハンドラーを登録すると、ハンドラーが 1 つだけ必要であると仮定すると、X 個の量のハンドラーが作成されるため、その方法がわかりません。
ここに私が持っているものがあります:
var categoryModel = ds.Tables[1].Rows.Cast<DataRow>()
.Select(x => x["Category"].ToString())
.Distinct()
.Select(y => new LanguageCategory { CategoryName = y, IsChecked = true });
public class LanguageCategory : INotifyPropertyChanged
{
private string categoryName;
private bool isChecked;
public event PropertyChangedEventHandler PropertyChanged;
public string CategoryName
{
get { return categoryName; }
set
{
categoryName = value;
NotifyPropertyChanged("CategoryName");
}
}
public bool IsChecked
{
get { return isChecked; }
set
{
isChecked = value;
NotifyPropertyChanged("IsChecked");
}
}
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}