0

我正在尝试在我的窗口上创建一系列动态的计算字段。

现在我让它在表单加载如下时工作......

<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(),因为它们中有很多。

4

1 回答 1

1

数据绑定需要在绑定值发生变化时得到通知。您必须实施INotifiyPropertyChanged才能做到这一点。(或依赖属性,但这需要代表您做更多的工作。)不幸的是,WPF 没有通灵能力。

于 2012-06-14T15:14:26.387 回答