我已经阅读了很多这方面的问题,到目前为止,我还没有找到关于这个看似简单问题的答案。
我有一个视图模型,其中包含一个属性。在我的XAML中,我有一个TextBox,它绑定了该属性。
但该物业似乎永远不会改变。
这是文本框:
<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语句上设置了一个断点,但它永远不会触发。我错过了一些明显的东西吗?我尝试将绑定模式设置为twoway,但这并没有改变任何东西。
这让我有点生气。任何帮助将不胜感激!
答案 0 :(得分:3)
您应该创建属性public
以便能够绑定它:
private String _charNameFromTB;
public String CharNameFromTB
{
get { return _charNameFromTB; }
set
{
this._charNameFromTB = value;
RaisePropertyChanged("CharNameFromTB");
}
}
还要确保已将DataContext
或其任何父元素的TextBox
设置为视图模型类的实例,其中CharNameFromTB
属性已定义。
另请注意,默认情况下,TextBox
失去焦点时会设置source属性。
如果要在每次击键时更新源属性,则应将UpdateSourceTrigger
的{{1}}属性设置为Binding
:
PropertyChanged