【发布时间】:2016-05-28 00:37:16
【问题描述】:
我是 C# 新手,我正在尝试更改我的数据网格以触发我的 main 中的方法。
我上课了:
public class siteMatch : INotifyPropertyChanged
{
public string SelectedTag
{
get { return _SelectedTag; }
set
{
if (value != _SelectedTag)
{
_SelectedTag = value;
OnPropertyChanged(_SelectedTag);
}
}
}
private string _SelectedTag;
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, e);
}
protected void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
}
我的主课上有这个:
public partial class MainWindow : Window
{
public ObservableCollection<siteMatch> sitesMatched = new ObservableCollection<siteMatch>();
public MainWindow()
{
InitializeComponent();
sitesMatched.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(items_CollectionChanged);
}
static void items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
foreach (INotifyPropertyChanged item in e.OldItems)
item.PropertyChanged -= new PropertyChangedEventHandler(item_PropertyChanged);
foreach (INotifyPropertyChanged item in e.NewItems)
item.PropertyChanged += new PropertyChangedEventHandler(item_PropertyChanged);
}
static void item_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
//throw new NotImplementedException();
}
}
我在这里遗漏了什么吗?当我更改数据网格上的某些内容时,不会触发 items_CollectionChanged 方法。我有一种感觉,我没有正确订阅该活动。 OnPropertyChanged 方法被正确触发,但之后没有任何反应。
任何帮助将不胜感激。
谢谢,
编辑:我应该指出我只能访问 .Net 4
【问题讨论】:
-
这个 OnPropertyChanged(_SelectedTag);应该是 OnPropertyChanged("_SelectedTag");
-
@Exxoff 不应该是 OnPropertyChanged("SelectedTag") 吗?由于 SelectedTag 是公共财产。 _SelectedTag 是私有数据成员。
-
@GáborBirkás 好的,但是省略引号时,他不是将属性的值发送到 OnPropertyChanged 方法而不是属性名称本身吗?
-
@GáborBirkás 我把它换了,谢谢。
标签: c# wpf events datagrid inotifypropertychanged