不同单位的 WPF binding/display
WPF binding/display of different units
我有一个应用程序需要以不同的单位显示很多值(英尺与米、度与弧度、英里与公里等)。每个显示值都需要有自己的可选单位(英尺或米)。我的第一个想法是创建一个用户控件,其中只有一个用于显示值的文本框和一个用于可用单位的组合框。
但是,如何绑定文本框才能显示正确的单位?而且,我如何处理文本框的绑定,以便在更改值时存储正确的基础模型类型(英尺或米)的值?
更新:
我最终按照@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);
}
您可以在文本框上使用 MultiBinding。将文本和单位传递给 MultiConverter 并让它进行计算和 return 文本。
我有一个应用程序需要以不同的单位显示很多值(英尺与米、度与弧度、英里与公里等)。每个显示值都需要有自己的可选单位(英尺或米)。我的第一个想法是创建一个用户控件,其中只有一个用于显示值的文本框和一个用于可用单位的组合框。
但是,如何绑定文本框才能显示正确的单位?而且,我如何处理文本框的绑定,以便在更改值时存储正确的基础模型类型(英尺或米)的值?
更新:
我最终按照@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);
}
您可以在文本框上使用 MultiBinding。将文本和单位传递给 MultiConverter 并让它进行计算和 return 文本。