我在FileWindow.xaml中有一个TextBox:
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="233,230,0,0" TextWrapping="Wrap" Text="{Binding FileName}" VerticalAlignment="Top" Width="120"/>
在ViewModel.cs中:
public String FileName
{
get { return _model.filename; }
set
{
if (value != _model.filename)
{
_model.filename = value;
OnPropertyChanged();
}
}
}
在Model.cs中:
private String _filename = "example.txt";
public String filename { get { return _filename; } set { _filename = value; } }
我希望每次输入TextBox时,Model.cs中的_filename都会更新 TextBox中的默认文本是example.txt,但如果我更改它,Model.cs中的_filename不会更改。我做错了什么?
答案 0 :(得分:5)
尝试将绑定的UpdateSourceTrigger
属性设置为PropertyChanged
:
Text="{Binding FileName, UpdateSourceTrigger=PropertyChanged}"
答案 1 :(得分:4)
TextBox未立即发送回源。相反,只有在TextBox上丢失焦点后才更新源。此行为由名为UpdateSourceTrigger
的绑定上的属性控制。
默认为值&#34;默认&#34;,这基本上意味着根据您绑定的属性更新源。
显然,默认值是UpdateSourceTrigger
的默认值。其他选项包括PropertyChanged
,LostFocus
和Explicit
。
<TextBox Text="{Binding FileName, UpdateSourceTrigger=PropertyChanged}" />