c# - 有没有办法在失去焦点事件之前执行 Textbox UpdateSourceTrigger=LostFocus?
问题描述
我有一个必须在执行事件之前TextBox
更新其中的属性,因为在事件中我使用属性的值进行计算。Text
LostFocus
LostFocus
Text
目前,当输入LostFocus
事件 ( txtTotaisNfe_LostFocus
)时,ThisDataContext.DescontoTotal
其值尚未更新。
PS:我不能使用UpdateSourceTrigger = PropertyChanged
,因为我PriceConverter1
在 WPF 中使用了一个转换器(),它只能在我在TextBox
. 它将输入的值转换为 2 个十进制值(即运行时LostFocus
)。
问题是: .NET 进程队列中是否有任何方法可以理解它必须先运行LostFocus
fromUpdateSourceTrigger
再运行( LostFocus
) txtTotaisNfe_LostFocus
?
WPF代码(DescontoTotal = ThisDataContext.Desconto)
:
<TextBox Text="{Binding DescontoTotal, Converter={StaticResource PriceConverter1}, Mode=TwoWay, UpdateSourceTrigger=Explicit}" LostFocus="txtTotaisNfe_LostFocus"/>
LostFocus
事件代码:
private void txtTotaisNfe_LostFocus(object sender, RoutedEventArgs e)
{
//Rateia o Total de Desconto da NFe entre os Produtos.
foreach (var item in _lsProdutos)
{
item.Desconto = (ThisDataContext.DescontoTotal / ThisDataContext.TotalProdutos * item.ValorProduto).Round();
}
}
PriceConverter1 代码(请忽略此处的最佳实践):
public class PriceConverter1 : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
try
{
return ((decimal)value).ToString("##,###,##0.00");
}
catch
{
return "0.00";
}
}
else
{
return "0.00";
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string price = value.ToString();
decimal result;
if (decimal.TryParse(price, System.Globalization.NumberStyles.Any, null, out result))
{
return result;
}
return value;
}
}
解决方案
推荐阅读
- c# - C# 中是否有任何 unequals() 方法?
- flutter - 颤振错误LateInitializationError:字段'animationStatus'尚未初始化
- reactjs - 如何在电容器顶部运行的 React Ionic 项目中插入图像?
- jasmine - 在另一个函数中模拟一个函数
- java - 使用java提取日志文件中两个时间戳之间的行
- python - 使用最小堆的列表中的第 K 个最大元素
- reactjs - 如何将(手动)接口构造从 React tsx 翻译成 React jsx?
- triggers - 在 arm 模板中使用时区触发 azure 数据工厂无法正常工作
- reactjs - 使用 DualList 组件呈现和添加数据时出现问题
- firebase - Firebase 可调用函数失败