如何在WPF中使用数据注释进行单位转换

4

比如说我有一个视图模型

class Measurements : ViewModelBase {

    [Units(Meters)]
    double Length { ... }

    [Units(Degrees)]
    double Angle{ ... }
}

然后在我的XAML中,我希望有这样的内容。
<TextBox Text="{Binding Path=Length DisplayUnits="Millimeters"}"/>
<TextBox Text="{Binding Path=Length DisplayUnits="Radians"}"/>

系统将确保文本框在显示单位中进行编辑,并转换为正确的视图模型单位。
我还将拥有一个全局设置单例对象。
class Settings : ViewModelBase {

    AngleUnitsEnum AngleDisplayUnits { ... }
    LengthUnitsEnum LengthDisplayUnits { ... }

}

可以随时更新,所有文本框都应立即更新其显示。

在我重新发明轮子、轴、发动机块和舒适座椅之前,有人能否建议是否有一种内置的简单方法来实现这一点?

1个回答

0
也许更好的方法是使用值转换器(实现了 IValueConverter 接口并在 XAML 中声明为资源的类)。您可以在 TextBox 上使用绑定,该绑定在失去焦点时触发,因此当您离开 TextBox 时,您的 ValueConverter 将触发并进行转换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接