WPF绑定/显示不同的单位

时间:2017-02-02 18:58:26

标签: c# wpf binding units-of-measurement

我有一个应用程序需要以不同的单位显示很多值(英尺与米,度与弧度,英里与公里等)。每个显示的值都需要有自己的可选单位(英尺或米)。我的第一个想法是创建一个用户控件,只显示一个用于显示值的文本框和一个可用单位的组合框。

但是,如何处理文本框的绑定以便显示正确的单位?并且,如何处理文本框的绑定,以便在更改值时,存储正确的基础模型类型(英尺或米)的值?

更新:

我最终使用了@Sledgehammer建议的MultConverter。我添加了一个格式字符串,因此开发人员也可以控制它。

在FeetToMetersMultiValueConverter中:IMultiValueConverter

    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        double value = (double)values[0];
        FeetOrMetersSelectionType valueType = (FeetOrMetersSelectionType)values[1];
        FeetOrMetersSelectionType displayValueType = (FeetOrMetersSelectionType)values[2];
        string valueFormat = (string)values[3];

        if (valueType != displayValueType)
        {
            if (displayValueType == FeetOrMetersSelectionType.Meters)
            {
                value = value * 0.3048;
            }
            else
            {
                value = value / 0.3048;
            }
        }

        return value.ToString(valueFormat);
    }

1 个答案:

答案 0 :(得分:2)

您可以在文本框中使用MultiBinding。将文本和单位传递给MultiConverter并让它进行计算并返回文本。