【发布时间】:2016-06-22 00:24:35
【问题描述】:
我有一个 ReactiveObject:
public class Example : ReactiveObject
{
private string _commonProperty;
public string CommonProperty
{
get { return _commonProperty; }
set { this.RaiseAndSetIfChanged(ref _commonProperty, value); }
}
private readonly ObservableAsPropertyHelper<string> _dependent;
public string DependentProperty => _dependent.Value;
public Example()
{
_dependent = this.WhenAnyValue(e => e.CommonProperty)
.Select(s => s?.ToUpper())
.ToProperty(this, e => e.DependentProperty);
}
}
当我更改 CommonProperty 的值时,PropertyChanged 事件的顺序和 Changed 可观察项的顺序不同。
例如:
var example = new Example();
example.PropertyChanged += (sender, args) => Console.WriteLine("Event: " + args.PropertyName);
example.Changed.Subscribe(args => Console.WriteLine("Changed Observable: " + args.PropertyName));
example.CommonProperty = "newValue";
打印
Event: CommonProperty
Event: DependentProperty
Changed Observable: DependentProperty
Changed Observable: CommonProperty
Events 有预期的顺序,但 Changed observable 没有。 所以问题是为什么 Changed Observable: DependentProperty 出现在 Changed Observable: CommonProperty 之前?
此外,我期望这样的输出:
Event: CommonProperty
Changed Observable: CommonProperty
Event: DependentProperty
Changed Observable: DependentProperty
为什么关于同一属性的事件和可观察通知是分开的?
【问题讨论】:
标签: c# observable reactiveui