C#WPF - 如何始终从文本框中获取当前文本?

时间:2017-04-03 10:33:38

标签: c# wpf xaml mvvm

我在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不会更改。我做错了什么?

2 个答案:

答案 0 :(得分:5)

尝试将绑定的UpdateSourceTrigger属性设置为PropertyChanged

Text="{Binding FileName, UpdateSourceTrigger=PropertyChanged}" 

答案 1 :(得分:4)

TextBox未立即发送回源。相反,只有在TextBox上丢失焦点后才更新源。此行为由名为UpdateSourceTrigger的绑定上的属性控制。

默认为值&#34;默认&#34;,这基本上意味着根据您绑定的属性更新源。

显然,默认值是UpdateSourceTrigger的默认值。其他选项包括PropertyChangedLostFocusExplicit

 <TextBox Text="{Binding FileName, UpdateSourceTrigger=PropertyChanged}" />