2017-04-03 36 views
3

我在FileWindow.xaml一個TextBox:C#WPF - 如何總是從文本框中獲取當前文本?

<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不會更改。我究竟做錯了什麼?

回答

5

嘗試綁定的UpdateSourceTrigger屬性設置爲PropertyChanged

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

文本框沒有立即發送回源。相反,僅在TextBox上的焦點丟失後才更新源代碼。此行爲由綁定的屬性UpdateSourceTrigger控制。

它默認值爲「Default」,這基本上意味着源根據您綁定的屬性進行更新。

顯然,默認值是UpdateSourceTrigger的默認值。其他選項是PropertyChanged,LostFocusExplicit

<TextBox Text="{Binding FileName, UpdateSourceTrigger=PropertyChanged}" /> 
相關問題