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