Я пытаюсь подключить новое событие, но по какой-то причине «Изменено» всегда вычисляемая обнулитьПочему мое «событие» всегда имеет значение 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);
}
Подписавшаяся код (PropertyChanged Works, Измененное не)
_playgroupTree = new MyTreeViewItem(null);
AddChildNodes(4, ref _playgroupTree);
_playgroupTree.Changed += new EventHandler(_playgroupTree_Changed);
_playgroupTree.PropertyChanged += new PropertyChangedEventHandler(_playgroupTree_PropertyChanged);
Это действительно странно, потому что я также внедряю INotifyPropertyChanged (который работает), и этот код почти точно такой же (я пытался использовать один и тот же тип деления, но все равно он не работает.
Я пользуюсь этим сайтом в качестве ссылки http://msdn.microsoft.com/en-us/library/aa645739%28VS.71%29.aspx
Вы, вероятно, подписались на неправильный объект. –
Я думаю, что проблема может заключаться в том, что мой класс носит иерархический характер. и событие всегда будет применяться к дочернему элементу и никогда не будет корневым. –
Подтвердили, что можно напрямую подключить определенный узел _playgroupTree.Children [0] .Changed + = new EventHandler (ReportingView_Changed); –