小编rei*_*erh的帖子

使用 ReactiveUI 的 BindTo() 更新 XAML 属性会生成警告

我正在尝试更新视图的 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() 一起正常工作。

编辑:它甚至出现常规BindOneWayBind生成此警告。

  1. 我在这里做错了什么?
  2. 并且真的有必要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)

c# wpf mvvm system.reactive reactiveui

5
推荐指数
1
解决办法
2408
查看次数

标签 统计

c# ×1

mvvm ×1

reactiveui ×1

system.reactive ×1

wpf ×1