gpt4 book ai didi

c# - 可观察的依赖属性

转载 作者:行者123 更新时间:2023-11-30 22:22:21 25 4
gpt4 key购买 nike

我是 Reactive Extension 的粉丝,尤其是 ReactiveUI我在其他解决方案的项目中有 DP,而不是我的。我想将其转换为可观察的包含此 DP 的类是内部的并且派生自 DependencyObject 因此我不能使用Class.ObservableFromDP 因为类必须派生自FrameworkElement

我有这个解决方案

public static IObservable<T> ToObservable<T>(this DependencyObject dependencyObject, DependencyProperty property)
{
return Observable.Create<T>(o =>
{
var des = DependencyPropertyDescriptor.FromProperty(property,
dependencyObject.
GetType());
var eh =
new EventHandler(
(s, e) => o.OnNext((T) des.GetValue(dependencyObject)));
des.AddValueChanged(dependencyObject, eh);
return () => des.RemoveValueChanged(dependencyObject, eh);
});

但目标类是内部类,我无法访问此类中的属性 DependencyProperty

如何从这个属性中获取 Observable

有什么方法吗

obj.ObservableFromDP(x=>x.ActiveEditor) 正在处理不是从 FrameworkElement 派生的 obj?

最佳答案

这实际上在 >= ReactiveUI 4.0 中得到了修复。现在您要做的就是:

// WhenAny now works on any object, will detect DependencyObject automatically
obj.WhenAny(x => x.ActiveEditor, x => x.Value)
.Subscribe(/* ... */)

关于c# - 可观察的依赖属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13875432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com