我正在尝试连接一个新事件,但出于某种原因,"Changed"总是评估为null
public class MyTreeViewItem : INotifyPropertyChanged
{
private MyTreeViewItem _parent;
public MyTreeViewItem(MyTreeViewItem parent)
{
_parent = parent;
}
private bool _checked;
public bool Checked
{
get
{
return _checked;
}
set
{
if (value != _checked)
{
_checked = value;
OnChanged("test");
OnPropertyChanged("Checked");
}
}
}
public event EventHandler Changed;
public ObservableCollection<MyTreeViewItem> Children { get; set; }
// Invoke the Changed event; called whenever list changes
protected virtual void OnChanged(string test)
{
if (Changed != null)
Changed(this, null);
}
Run Code Online (Sandbox Code Playgroud)
订阅代码(PropertyChanged Works,Changed没有)
_playgroupTree = new MyTreeViewItem(null);
AddChildNodes(4, ref _playgroupTree);
_playgroupTree.Changed += new EventHandler(_playgroupTree_Changed);
_playgroupTree.PropertyChanged += new PropertyChangedEventHandler(_playgroupTree_PropertyChanged);
Run Code Online (Sandbox Code Playgroud)
真的很奇怪,因为我也在实现INotifyPropertyChanged(它的工作原理),这段代码几乎完全一样(我尝试使用相同的deligate类型,但它仍然不起作用.
我一直在使用这个网站作为参考 http://msdn.microsoft.com/en-us/library/aa645739%28VS.71%29.aspx
Jon*_*eet 21
好吧,你没有显示任何订阅该事件的代码.你在哪里有这样的代码:
YourClass yc = new YourClass();
yc.Changed += SomeHandler;
Run Code Online (Sandbox Code Playgroud)
?如果您可以生成一个简短但完整的程序来演示问题,那么诊断起来会容易得多.
| 归档时间: |
|
| 查看次数: |
18832 次 |
| 最近记录: |