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

4

我在FileWindow.xaml中有一个文本框:

<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; } }

我希望每当我在文本框中键入内容时,Model.cs文件中的_filename得到更新。
文本框中的默认文本是example.txt,但如果我更改它,Model.cs文件中的_filename并不会改变。我做错了什么?

2个回答

5
尝试将绑定的UpdateSourceTrigger属性设置为PropertyChanged
Text="{Binding FileName, UpdateSourceTrigger=PropertyChanged}" 

4

文本框(TextBox)不会立即将内容返回到源。只有在焦点离开文本框时,源才会被更新。这种行为由绑定属性中的UpdateSourceTrigger控制。

默认情况下,它的值为“Default”,这基本上意味着源是根据你绑定的属性进行更新的。

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接