gpt4 book ai didi

c# - MVVM 基本内容控件绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:35 24 4
gpt4 key购买 nike

我正在尝试找出将 ViewModel 绑定(bind)到 ContentControl 的正确方法(我在网上找遍了但找不到可以正常工作的示例)。

我的模型:

public class Model
{

private string _Variable = "TEST";
public string Variable
{
get { return _Variable; }
set { _Variable = value; }
}
}

我的 View 模型

public class ViewModel :ViewModelBase
{
private Model _Model = new Model();

public string Variable
{
get { return _Model.Variable; }
set
{
if (_Model.Variable != value)
{
_Model.Variable = value;
RaisePropertyChanged("Variable");
}
}
}

我的 View /窗口

<Window.DataContext>
<local:ViewModel />
</Window.DataContext>

<Window.Resources>
<DataTemplate DataType="{x:Type System:String}">
<TextBox/>
</DataTemplate>
</Window.Resources>

<StackPanel>
<ContentControl Content="{Binding Path=Variable}" />
</StackPanel>

所以本质上,我已经(或者至少我相信我已经)将 ContentControl 的内容设置为 ViewModel 属性“Variable”,它是字符串类型,因此应该实现唯一的 DataTemplate 并显示一个文本框。

然后发生了......显示了一个文本框!但是,文本框是空的,所做的任何更改都不会影响变量。

这意味着我在 Batabinding 中犯了一个错误,但我不明白在哪里。我有一种感觉,只是因为我的 DataTemplate 正在显示一个文本框,实际上并没有将字符串绑定(bind)到它,但这正是我迷失的地方。

感谢任何帮助/建议。

最佳答案

您还没有指定 TextBox 的 Text 绑定(bind),它与 DataContext 完全分开。由于您希望 TextBox 绑定(bind)到它自己的 DataContext,只需执行以下操作:

<TextBox Text="{Binding Path=.}"/>

关于c# - MVVM 基本内容控件绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34713802/

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