【发布时间】:2010-07-23 16:27:50
【问题描述】:
显然,我不是 C# 方面的专家。我想通过使用匿名处理程序或 lambda 来简化此代码,不确定。 ValueHasChanged 是一个PropertyChangedCallback,当一个 dp 改变时使用,它确保新对象将被监控更新,这样改变和更新都将使用相同的代码:ProcessNewValue。这里的遗憾是创建第二个处理程序ValueHasBeenUpdated 只是为了调用相同的方法。是否有可能删除ValueHasBeenUpdated 的定义?谢谢。
private static void ValueHasChanged(
DependencyObject sender, DependencyPropertyChangedEventArgs args) {
// get instance
MyClass1 instance = sender as MyClass1;
// unregister on old object
if (args.OldValue != null) (args.OldValue as MyClass2).PropertyChanged -=
instance.ValueHasBeenUpdated;
// register for updates on new object
if (args.NewValue != null) (args.NewValue as MyClass2).PropertyChanged +=
instance.ValueHasBeenUpdated;
// process new value anyway
instance.ProcessNewValue();
}
// value has been updated
private void ValueHasBeenUpdated(object sender, PropertyChangedEventArgs e) {
// just call the actual method that will process it, not elegant...
ProcessNewValue();
}
// process any new or updated object
private void ProcessNewValue() {...}
【问题讨论】:
标签: c# event-handling dependency-properties anonymous-methods simplify