代码之家  ›  专栏  ›  技术社区  ›  Matthew Clendening

使用ReactiveUI进行Xaml绑定时避免绑定错误

  •  2
  • Matthew Clendening  · 技术社区  · 6 年前

        public MyView()
        {
            InitializeComponent();
    
            this.WhenActivated(disposables =>
                {
                     this.DataContext = this.ViewModel;
    
                     ...
                });
        }
    

    这很有效,但在运行时输出窗口中会出现错误:

    System.Windows.Data Error: 40 : BindingExpression path error: ...
    

    我正在使用ReactiveUserControls、ViewModelViewHosts,并在定位器中注册视图/ViewModel映射,让ReactiveUI解析它们。我想我会尽快设置数据上下文。因此,当我需要使用XAML绑定时,是否有另一种设置DataContext的方法来避免虚拟调试输出错误?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Glenn Watson    6 年前

    现在的问题是,您永远不会自适应地获得ViewModel的新版本,而且您可能会获得延迟订阅。

    你最好考虑使用 WhenAnyValue()

    this.WhenAnyValue(x => x.ViewModel).Bindto(this, x => x.DataContext);
    

    考虑在你的房间里玩 因为这样可以避免内存泄漏,否则请保留对 IDisposable公司