我正在尝试使用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
在进一步调查中,当我在我的主项目中使用用户控件时,订阅调用似乎工作,而不是在我用于测试它的小项目中。我不确定有什么区别。
答案 0 :(得分:1)
几个问题: