可观察的依赖项属性



我是Reactive Extension的粉丝,尤其是ReactiveUI我在除我的项目以外的其他解决方案项目中有 DP。我想将其转换为可观察的包含此 DP 的类是内部的,派生自依赖对象,因此我无法使用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);
                                        });

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

如何从此属性获取可观察

有没有办法作为

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(/* ... */)

相关内容

  • 没有找到相关文章

最新更新