1

我正在尝试使用 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

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

4

1 回答 1

1

几个问题:

  1. 您的代码中有对 ReactiveUI.Xaml 的引用吗?如果加载不正确,这将不起作用
  2. 你使用的是什么版本的 ReactiveUI?
于 2013-03-05T04:11:32.330 回答