【发布时间】:2018-07-26 08:04:20
【问题描述】:
鉴于此设置,
public static class NotifyPropertyChangedExtensions
{
public static IObservable<EventPattern<PropertyChangedEventArgs>> WhenPropertyChanged(this INotifyPropertyChanged source)
{
return Observable.FromEventPattern<PropertyChangedEventHandler, PropertyChangedEventArgs>(
ev => source.PropertyChanged += ev,
ev => source.PropertyChanged -= ev);
}
}
public class Node : INotifyPropertyChanged
{
public bool IsChecked
{
get => _isChecked;
set
{
if (_isChecked != value)
{
_isChecked = value;
OnPropertyChanged();
}
}
}
}
nodes.Values.Select(node => node.WhenPropertyChanged())
.Merge()
.Where(x => x.EventArgs.PropertyName == "IsChecked")
.Throttle(TimeSpan.FromMilliseconds(200))
.Subscribe(x =>
{
// do somethings
});
为什么当我打电话时这不会触发任何事件? nodeX.IsChecked = true; 设置订阅后立即生效,但之后可以使用?
【问题讨论】:
-
如果您可以扩展发布的代码以便实际编译并可以使用,那就太好了。