【发布时间】:2010-10-27 15:12:36
【问题描述】:
我在弄清楚如何执行此操作时遇到问题。我有两个实现INotifyPropertyChanged 的实例(源和目标),我正在跟踪两者的PropertyChanged 事件。我想要做的是在source.PropertyChanged 被提出时运行一个动作,直到target.PropertyChanged 被提出。我可以像这样很好地做到这一点:
INotifyPropertyChanged source;
INotifyPropertyChanged target;
var sourcePropertyChanged = Observable
.FromEvent<PropertyChangedEventArgs>(source, "PropertyChanged")
.Where(x => x.EventArgs.PropertyName == sourcePropertyName);
var targetPropertyChanged = Observable
.FromEvent<PropertyChangedEventArgs>(target, "PropertyChanged")
.Where(x => x.EventArgs.PropertyName == targetPropertyName);
sourcePropertyChanged
.TakeUntil(targetPropertyChanged)
.ObserveOnDispatcher()
.Subscribe(_ => /*Raises target.PropertyChanged for targetPropertyName*/);
我遇到的问题是我想忽略由操作引起的PropertyChanged 通知,并且仅在外部源引发PropertyChanged 事件时才停止取值。有什么好的方法可以实现吗?
【问题讨论】:
-
您所说的“PropertyChanged 通知由操作”是什么意思?什么动作?
-
@Ronald 我更新了我的解释,希望能更清楚一点,但我所说的操作是指不返回值的函数。
/*Raises target.PropertyChanged for targetPropertyName*/所代表的部分。
标签: c# silverlight silverlight-4.0 system.reactive