我正在尝试在我的窗口上创建一系列动态的计算字段。
现在我让它在表单加载如下时工作......
<Window.Resources>
<src:PaymentVarianceConverter x:Key="PaymentConverter" />
</Window.Resources>
<TextBlock Text="{Binding Path=., Converter={StaticResource PaymentConverter},
ConverterParameter=CASH, StringFormat={}{0:C}, Mode=OneWay}"/>
<TextBlock Text="{Binding Path=., Converter={StaticResource PaymentConverter},
ConverterParameter=CHECK, StringFormat={}{0:C}, Mode=OneWay}"/>
这是转换器:
public sealed class PaymentVarianceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!(value is Route))
return null;
var route = value as Route;
switch (parameter.ToString())
{
case "CASH":
return route.CashTotal - route.TotalExpectedCash;
case "CHECK":
return route.CheckTotal - route.TotalExpectedCheck;
default:
return null;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException("ConvertBack Not implemented");
}
}
所有这一切都很好,除了当基础值(即 route.CashTotal)发生变化时它不会刷新。
有什么办法可以让它动态刷新吗?我想避免在我的源对象上创建它们的属性并为它们中的每一个调用 OnPropertyChanged(),因为它们中有很多。