在WPF中创建动态计算字段

时间:2012-06-14 15:08:17

标签: wpf entity-framework data-binding ivalueconverter

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

现在,当表单加载如下时,我可以正常工作......

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

1 个答案:

答案 0 :(得分:1)

数据绑定需要在绑定值更改时得到通知。您必须实施INotifiyPropertyChanged才能执行此操作。 (或依赖属性,但这需要代表你做更多的工作。)不幸的是,WPF没有精神力量。