私はReactiveExtensionのファンであり、特に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で作業していますか?