Я реализовал привязку данных WPF с помощью метода INotifyPropertyChanged.WPF: лучший способ блокировать OnPropertyChanged
public class ExportNode : INotifyPropertyChanged
{
public uint Handle { get; set; }
public String Text { get; set; }
private bool _ischecked;
public bool IsChecked
{
get
{
return _ischecked;
}
set
{
_ischecked = value;
OnPropertyChanged("IsChecked");
}
}
public event PropertyChangedEventHandler PropertyChanged;
// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
И чем подписаться на события формируют свой код, так что всякий раз, когда я изменить свойство в пользовательском интерфейсе, он запускает функцию обратного вызова. Но теперь я пытаюсь найти лучший способ изменить свойство из кода, а не обращать обратный вызов, просто обновить интерфейс.
void newNode_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "IsChecked")
{
}
}
На данный момент я просто подумал о реализации некоторых «блокирующие» свойства члена в ExportNode
protected void OnPropertyChanged(string name)
{
if (Blocked)
return;
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
или удалить экземпляр формы событий до изменения.
newNode.PropertyChanged -= newNode_PropertyChanged;
newNode.IsChecked = true;
newNode.PropertyChanged += newNode_PropertyChanged;
Но есть ли лучший способ? Я просто не понимаю некоторых основ? :-)
Большое спасибо
Roman
О, спасибо за разъяснение. Я думаю, мне нужно больше спать :-) – zwadar