2012-03-12 58 views
3

我有以下的绑定在我的WPF应用程序INotifyPropertyChanged的更新ontextchange

XAML:

<TextBox Text="{Binding Amount, StringFormat=c}" Name="txtAmount" /> 

C#(代码后面):

public partial class MainWindow : Window, INotifyPropertyChanged 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     // needed to create the binding 
     this.DataContext = this; 
    } 

    private decimal _Amount; 

    public decimal Amount 
    { 
     get { 
      return _Amount; 
     } 
     set{ 
      _Amount= value; 
      OnPropertyChanged("Amount");    
     } 
    } 


    public event PropertyChangedEventHandler PropertyChanged = delegate { }; 

    private void OnPropertyChanged(string propertyName) 
    { 
     PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 

    //..... 

代码工作正常。在我的代码后面的属性金额会更新,每当我改变txtAmount的价值,也是另一种方式(改变价值的金额在C#将更新txtAmount)

无论如何,如何更新金额,每次我改变控件txtAmount中的文本?我不想等到txtAmount失去焦点,这样Amount才会在代码后面更新。


事情我已经尝试:我txtAmount被格式化为货币

 txtAmount.TextChanged += (a, b) => 
     { 
      Amount = decimal.Parse(txtAmount.Text); 
     }; 

召回因此如果它具有1的值txtAmount将显示$ 1.00包装我知道,我应该能够取代$为了能够将它转换为十进制数。如果这个应用程序在哪里使用不同的文化,例如es用于西班牙语,那么文本框将显示eruo而不是$,并且我将不得不替换该符号以便能够投射它。

简而言之,每当文本在该控件中发生更改时,能够更新捆绑到我的txtAmount控件的Amount属性的方法,而不是控件失去焦点时?

+1

可能重复http://stackoverflow.com/questions/7178871 /活绑定属性更改换文本框) – 2012-03-12 15:37:41

回答

8

设置绑定属性UpdateSourceTriggerPropertyChanged

<TextBox Text="{Binding Amount, StringFormat=c, UpdateSourceTrigger=PropertyChanged}" Name="txtAmount" /> 
的[直播约束力的文本属性更改(
3

所以总之有一种方法可以更新绑定到我的txtAmount控件的金额属性,每次在该控件中的文本更改而不是控件失去焦点时?

简而言之:

<TextBox Text="{Binding Amount, StringFormat=c, 
         UpdateSourceTrigger=PropertyChanged}" Name="txtAmount" /> 
相关问题