분명히 C#의 전문가는 아닙니다. 나는이 코드를 익명 처리기를 사용하여 단순화하고 싶다. 아니면 확실하지 않은 람다 (lambda)를 사용한다. ValueHasChanged
은 dp가 변경 될 때 사용되는 PropertyChangedCallback
이므로 새 개체가 업데이트되도록 모니터링되어 변경 및 업데이트가 동일한 코드 인 ProcessNewValue
을 사용하여 처리됩니다. 여기서 동정은 두 번째 처리기 ValueHasBeenUpdated
을 만들어 동일한 메서드를 호출하는 것입니다. ValueHasBeenUpdated
의 정의를 삭제할 수 있습니까? 감사.C#, 종속성 속성의 변경과 업데이트를 모두 처리하는 간단한 코드
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() {...}
좋아, 이쪽으로 가자. 누군가 다른 연습을했다면 나도 흥미가있을거야. 감사. – 742