我正在尝试更新视图的 XAML 中元素的属性:
this.WhenAnyValue(x => x.ViewModel.IsEnabled).BindTo(this, x => x.MyButton.IsEnabled);
Run Code Online (Sandbox Code Playgroud)
这按预期工作,但是,它在运行时生成警告:
POCOObservableForProperty: rx_bindto_test.MainWindow 是 POCO 类型,不会发送更改通知,WhenAny 只会返回一个值!
我可以通过将表达式更改为:
this.WhenAnyValue(x => x.ViewModel.IsEnabled).Subscribe(b => MyButton.IsEnabled = b);
Run Code Online (Sandbox Code Playgroud)
但我仍然想知道为什么它不能与 BindTo() 一起正常工作。
编辑:它甚至出现常规Bind并OneWayBind生成此警告。
ViewModel在 View 上定义一个依赖属性才能观察到它吗?(当我将它声明为视图上的常规属性时,ReactiveUI 会生成相同的 POCO 警告)我不能简单地使其从 ReactiveObject 继承,因为 C# 不支持多重继承。主窗口.xaml.cs
public partial class MainWindow : Window, IViewFor<MyViewModel>, IEnableLogger {
public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register("ViewModel",
typeof(MyViewModel), typeof(MainWindow));
public MyViewModel ViewModel {
get { return (MyViewModel)GetValue(ViewModelProperty); }
set { SetValue(ViewModelProperty, value); }
}
object …Run Code Online (Sandbox Code Playgroud)