2013-04-26 51 views
4

我有例如视图模型如何使用数据的注释做单位换算在WPF

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 { ... } 

} 

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

在我重新发明车轮,轴,发动机缸体和 舒适的座椅有人可以建议,如果有一个简单的方法来实现这个内置的 ?

回答

0

更好的方法可能是使用值转换器(实现IValueConverter的类,并在XAML中声明为资源)。你可以在你的文本框上使用一个绑定在LostFocus上触发,所以当你离开TextBox时,你的ValueConverter会触发并执行转换