【发布时间】:2012-09-12 10:42:20
【问题描述】:
我有一个要转换为实现 INotifyPropertyChanged 的模型的 DataTable。
这会绑定到一个带有复选框的列表框。当复选框被选中时,PropertyChanged 事件会触发。我想处理这个问题,因为我有一个绑定到 DataTable 的 DataGrid。我想根据选中的项目过滤那个 DataTable。
我想订阅 MainWindow.xaml.cs 中的 PropertyChange 事件,但是我不确定如何做到这一点,因为当我假设我只需要时,在模型的构造函数中注册处理程序会创建 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));
}
}
}
【问题讨论】:
-
您能否详细说明问题。为什么要订阅 Window.xaml.cs 中的 PropertyChanged。
标签: c# .net wpf inotifypropertychanged