簡體   English   中英

INotifyPropertyChanged更新ontextchange

[英]INotifyPropertyChanged update ontextchange

我的wpf應用程序中有以下綁定

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的值時,我的代碼中的屬性Amount都會更新,反之亦然(更改C#中Amount的值將更新txtAmount)

無論如何,每次更改控件txtAmount中的文本時,如何更新金額? 我不想等到txtAmount失去焦點,以便Amount得到更新后面的代碼。


我嘗試過的事情:

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

回想一下,我的txtAmount被格式化為貨幣,因此如果它的值為1,則txtAmount將顯示$ 1.00我知道我應該能夠替換$以便能夠將其轉換為十進制。 如果這個應用程序在哪里使用不同的文化說例如es為西班牙語,那么文本框將顯示一個eruo而不是$,我將不得不替換該符號以便能夠投射它。

所以簡而言之,有一種方法可以更新每次文本在該控件中更改時綁定到我的txtAmount控件的Amount屬性,而不是在控件失去焦點時?

將綁定屬性UpdateSourceTrigger設置為PropertyChanged

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

所以簡而言之,有一種方法可以更新每次文本在該控件中更改時綁定到我的txtAmount控件的Amount屬性,而不是在控件失去焦點時?

簡而言之:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM