gpt4 book ai didi

wpf - IViewFor 绑定(bind)扩展方法如何工作?

转载 作者:行者123 更新时间:2023-12-03 10:12:39 25 4
gpt4 key购买 nike

简单的问题,但我没有看到解决方案。或者可能不明白 Bind 方法是如何工作的。
目标是 ViewModel 和 DataContext 属性之间的双向绑定(bind)。

    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); }
}

当我设置 ViewModel 属性时,我将 InvalidCastException "System.String"设置为 "WpfApplication1.MainWindow"。

但是 xaml 绑定(bind)工作得很好。
<MainWindow 
DataContext="{Binding RelativeSource={RelativeSource Self}, Path=ViewModel, Mode=TwoWay}" ...

完整的 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

我绑定(bind)到 _otherViewModel,但是当在 textBox 中输入文本时,ViewModel.StrProp 发生了变化,而不是 _otherViewModel。

有谁知道,this.Bind 是如何工作的?

最佳答案

Bind在 ViewModel 和 DataContext 之间不起作用,因为类型不匹配(即我可以将 DataContext 设置为“4”,现在它无法将其分配给 ViewModel)。

但是,如果您使用 ReactiveUI 绑定(bind),则不要 需要 DataContext,你应该在任何地方都使用 RxUI 绑定(bind)。请忽略此线程上的其他答案,这些答案告诉您如何以错误的方式做事。

关于wpf - IViewFor 绑定(bind)扩展方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28234151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com