c# – INotifyPropertyChanged更新ontextchange
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – INotifyPropertyChanged更新ontextchange,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1458字,纯文字阅读大概需要3分钟。
内容图文
![c# – INotifyPropertyChanged更新ontextchange](/upload/InfoBanner/zyjiaocheng/758/9fb4d92616f547cb8f06857ad82c9c5a.jpg)
我的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" />
内容总结
以上是互联网集市为您收集整理的c# – INotifyPropertyChanged更新ontextchange全部内容,希望文章能够帮你解决c# – INotifyPropertyChanged更新ontextchange所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。