Евг*_*вин 2 data-binding wpf mvvm reactiveui
简单的问题,但我会看到解决方案.或者可能不明白Bind方法是如何工作的.目标是ViewModel和DataContext属性之间的双向绑定.
public MainWindow()
{
InitializeComponent();
this.Bind(this, v => v.DataContext, v => v.ViewModel);
}
public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register(
"ViewModel", typeof (string), typeof (MainWindow));
public string ViewModel
{
get { return (string) GetValue(ViewModelProperty); }
set { SetValue(ViewModelProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)
当我设置ViewModel属性时,我得到InvalidCastException"System.String"到"WpfApplication1.MainWindow".
但是xaml绑定工作得很好.
<MainWindow
DataContext="{Binding RelativeSource={RelativeSource Self}, Path=ViewModel, Mode=TwoWay}" ...
Run Code Online (Sandbox Code Playgroud)
完整的xaml.cs/xaml代码在这里http://pastebin.com/iCKeNS7R
哪里错了?
更新: 此代码:
this.WhenAnyValue(v => v.ViewModel).BindTo(this, v => v.DataContext);
this.WhenAnyValue(v => v.DataContext).BindTo(this, v => v.ViewModel);
也按预期工作
更新2 问题:this.Bind(viewModelParam,...)是否忽略viewModelParam参数?
例子^ http://pastebin.com/e2aPaGNc
我绑定到_otherViewModel,但是当在textBox中键入文本时,ViewModel.StrProp发生了变化,而不是_otherViewModel.
有谁知道,怎么样.绑定工作?
Ana*_*tts 72
Bind 在ViewModel和DataContext之间不起作用,因为类型不匹配(即我可以将DataContext设置为'4',现在它无法将其分配给ViewModel).
但是,如果您使用的是ReactiveUI绑定,则根本不需要 DataContext,您应该只在任何地方使用RxUI绑定.请忽略此主题上的其他答案,告诉您如何以错误的方式做事.
| 归档时间: |
|
| 查看次数: |
6245 次 |
| 最近记录: |