2017-04-03 25 views
3

私はFileWindow.xamlでのテキストボックスがあります。ViewModel.csでC#WPF - テキストボックスから常に現在のテキストを取得するにはどうすればよいですか?

<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="233,230,0,0" TextWrapping="Wrap" Text="{Binding FileName}" VerticalAlignment="Top" Width="120"/> 

:Model.csで

public String FileName 
{ 
    get { return _model.filename; } 
    set 
    { 
     if (value != _model.filename) 
     { 
      _model.filename = value; 
      OnPropertyChanged(); 
     } 
    } 
} 

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

PropertyChangedへの結合のUpdateSourceTriggerプロパティを設定してください:

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

のTextBoxはすぐに元に戻って送信されませんでした。代わりに、TextBoxでフォーカスが失われた後にのみ、ソースが更新されました。この動作は、UpdateSourceTriggerというバインディングのプロパティによって制御されます。

既定値は「既定値」です。これは基本的に、バインドするプロパティに基づいてソースが更新されることを意味します。

デフォルトは、明らかにUpdateSourceTriggerのデフォルト値です。その他のオプションは、PropertyChanged,LostFocusおよびExplicitです。

<TextBox Text="{Binding FileName, UpdateSourceTrigger=PropertyChanged}" /> 
関連する問題