2012-03-12 36 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" /> 
相關問題