0
我正尝试在我的窗口上创建一系列动态计算字段。在WPF中创建一个动态计算字段
现在我有工作当窗体加载如下...
<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(),因为它们中有很多。
感谢您的快速回复。我是WPF的新手,我来自Win Forms世界。不确定是否有某种方法将TextBox的文本属性绑定到窗口上其他文本框的计算。 –
@GabrielMontanaro:您可以在控件之间创建数据绑定,因为“TextBox.Text”属性是一个依赖属性,可以与绑定框架进行交互,并在发生更改时发送通知。然而,你似乎直接绑定到'DataContext',然后必须实现一种方式来通知数据绑定框架的变化。 –