【发布时间】:2018-08-13 17:11:15
【问题描述】:
我喜欢 ReactiveUI 的基于代码的绑定机制。但是,有时您需要使用 XAML 绑定。在这些情况下,需要在 View 和 ViewModel 之间正确设置 DataContext。我一直在 View 构造函数中这样做:
public MyView()
{
InitializeComponent();
this.WhenActivated(disposables =>
{
this.DataContext = this.ViewModel;
...
});
}
这可行,但我在运行时的输出窗口中出现错误:
System.Windows.Data Error: 40 : BindingExpression path error: ...
我正在使用 ReactiveUserControls、ViewModelViewHosts,并在 Locator 中注册 View/ViewModel 映射并让 ReactiveUI 解决它们。我想我会尽早设置 DataContext 。所以当我需要使用 XAML 绑定时 - 是否有另一种方法来设置 DataContext 以避免幻像调试输出错误?
【问题讨论】:
-
this.WhenAnyValue(x => x.ViewModel).BindTo(this, x => x.DataContext);可能会更快。
-
好电话!将 WhenActivated 替换为您建议的内容,这样就不会触发调试错误。
标签: reactiveui