ReactiveUIを使用して、UserControlの依存関係プロパティの変更をサブスクライブしようとしています。
別のスタックオーバーフローの回答(依存関係のプロパティを組み合わせる)で説明されている手法を見ましたが、どこかで実装に問題があります。以下の単純なケースでも、依存関係プロパティが変更されたときにサブスクリプションを起動することはできません。
これが私のコードの関連部分です:
public partial class AutoCompleteBox : UserControl
{
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register("SelectedItem",typeof(object),typeof(AutoCompleteBox),
new FrameworkPropertyMetadata{BindsTwoWayByDefault = true});
public object SelectedItem
{
get { return (object)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
public AutoCompleteBox()
{
InitializeComponent();
this.WhenAny(m=>m.SelectedItem,m=>m.Value)
.Subscribe(_=>
Console.WriteLine("Selected Item Changed!"));
}
}
編集
ReactiveUIバージョン4.4.2.0を使用しています
さらに調査すると、サブスクライブ呼び出しは、テストに使用している小さなプロジェクトではなく、メインプロジェクトでユーザーコントロールを使用したときに機能するように見えます。違いが何であるかわかりません。