gpt4 book ai didi

c# - 订阅 Window.xaml.cs 中的 PropertyChanged 事件

转载 作者:行者123 更新时间:2023-12-02 22:30:19 26 4
gpt4 key购买 nike

我有一个 DataTable,我正在将其转换为实现 INotifyPropertyChanged 的​​模型。

这会绑定(bind)到一个带有复选框的列表框。选中复选框时,将触发 PropertyChanged 事件。我想处理这个,因为我有一个绑定(bind)到 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));
}
}
}

最佳答案

创建一个新类“Notifier”,它将具有公共(public)事件,比如 DataChanged,以及引发 DataChanged 事件的公共(public)方法。然后修改属性更改实现:

public bool IsChecked
{
get { return isChecked; }

set
{
isChecked = value;
NotifyPropertyChanged("IsChecked");
Notifier.RaiseDataChanged();
}
}

订阅MainWindow.xaml中的Notifier.DataChanged事件

关于c# - 订阅 Window.xaml.cs 中的 PropertyChanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12386385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com