在ReactiveUI中订阅用户控件上的依赖项属性

时间:2013-03-04 18:36:08

标签: c# wpf wpf-controls dependency-properties reactiveui

我正在尝试使用ReactiveUI来订阅依赖项属性中的更改 在UserControl上。

我看到了另一个堆栈溢出答案(Combine dependency properties)中描述的技术,但我在某处实现了错误。即使在下面的简单情况下,依赖属性更改时也无法触发订阅。

以下是我的代码的相关部分:

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

在进一步调查中,当我在我的主项目中使用用户控件时,订阅调用似乎工作,而不是在我用于测试它的小项目中。我不确定有什么区别。

1 个答案:

答案 0 :(得分:1)

几个问题:

  1. 您的代码中是否有对ReactiveUI.Xaml的引用?如果没有正确加载,这将无法正常工作
  2. 您使用的是哪种版本的ReactiveUI?