gpt4 book ai didi

WPF MVVM 获取文本框数据到 ViewModel

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

我已经阅读了很多关于这个的问题,到目前为止,我还没有找到这个看似简单的问题的答案。

我有一个 View 模型,其中是一个属性。在我的 XAML 中,我有一个与该属性绑定(bind)的 TextBox。

但属性(property)似乎永远不会改变。

这是文本框:

<TextBox Grid.Row="1"
Grid.Column="0"
Margin="4"
Text="{Binding CharNameFromTB}" />

以及 ViewModel 背后的相关代码:
private String _charNameFromTB;
String CharNameFromTB
{
get { return _charNameFromTB; }

set
{
if (!string.Equals(this._charNameFromTB, value))
{
this._charNameFromTB = value;
RaisePropertyChanged("CharNameFromTB");
}
}
}

我在 setter 中的 if 语句上放了一个断点,但它永远不会触发。我错过了什么明显的东西吗?我尝试将绑定(bind)模式设置为双向,但这并没有改变任何东西。

这让我有点生气。任何帮助,将不胜感激!

最佳答案

您应该将属性设为 public为了能够绑定(bind)到它:

private String _charNameFromTB;
public String CharNameFromTB
{
get { return _charNameFromTB; }

set
{
this._charNameFromTB = value;
RaisePropertyChanged("CharNameFromTB");
}
}

还要确保您已设置 DataContextTextBox或其任何父元素到您的 View 模型类的实例,其中 CharNameFromTB属性被定义。

另请注意,默认情况下,源属性在 TextBox 时设置。失去焦点。

如果您想在每次击键时更新源属性,您应该设置 UpdateSourceTrigger Binding 的属性(property)至 PropertyChanged :
<TextBox Grid.Row="1"
Grid.Column="0"
Margin="4"
Text="{Binding CharNameFromTB, UpdateSourceTrigger=PropertyChanged}" />

关于WPF MVVM 获取文本框数据到 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42553198/

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