我已经读了很多关于这个问题的问题,到目前为止,我还没有找到这个明显简单的问题的答案。
我有一个视图模型,其中是一个属性。在我的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语句上设置了一个断点,但它从未触发过。我是不是遗漏了什么明显的东西?我试着将绑定模式设置为双向,但这并没有改变任何事情。
这让我有点抓狂。任何帮助都将不胜感激!
发布于 2017-03-02 18:46:53
您应该将属性设置为public,以便能够绑定到该属性:
private String _charNameFromTB;
public String CharNameFromTB
{
get { return _charNameFromTB; }
set
{
this._charNameFromTB = value;
RaisePropertyChanged("CharNameFromTB");
}
}还要确保您已经将TextBox或其任何父元素的DataContext设置为定义了CharNameFromTB属性的视图模型类的实例。
另请注意,默认情况下,当TextBox失去焦点时会设置source属性。
如果要在每次击键时更新源属性,则应将Binding的UpdateSourceTrigger属性设置为PropertyChanged
<TextBox Grid.Row="1"
Grid.Column="0"
Margin="4"
Text="{Binding CharNameFromTB, UpdateSourceTrigger=PropertyChanged}" />https://stackoverflow.com/questions/42553198
复制相似问题