如何在wpf应用程序中添加公制和英制系统
问题描述:
我有一个默认设置,它将IsMetricMeasurements设置为默认实例中的bool设置。但是,当我使用它与CoerceProperty来检查最大值和最小值并使其公制,即使用户键入并选择英寸。这是整个转换系统的混乱。哪里应该把我的转换逻辑,我想使毫米(公制)。即使如果我检查我的xaml(IO文件)它保存正确的值,但是当我在应用程序本身读取保存的文件时,它会给出错误的值。如何在wpf应用程序中添加公制和英制系统
Dimensiondata.cs
public class DimensionData : BaseDateEntity, ICloneable, IDataErrorInfo ,IValueConverter
{
public static readonly DependencyProperty DiameterProperty = DependencyProperty.Register("Diameter", typeof(float), typeof(DimensionData),
new FrameworkPropertyMetadata(Consts.DimensionDataDiameter, OnDiameterPropertyChanged, OnDiameterCoerceProperty));
public float Diameter
{
get { return (float)GetValue(DiameterProperty); }
set { SetValue(DiameterProperty, value); }
}
static object OnDiameterCoerceProperty(DependencyObject sender, object value)
{
if (Properties.Settings.Default.IsMetricMeasurements)
{
return RangeHelper.RangeLength(140F, 900F, (float)value);
}
else
{
value = (float)value/25.4F;
return RangeHelper.RangeLength(5.511F, 35.43F, (float)value);
}
static void OnDiameterPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
{
DimensionData data = dependencyObject as DimensionData;
if (null != data)
{
}
}
RangeHelper类
public static float RangeLength(float min, float max, float value)
{
float r = value;
if (r > max)
r = max;
if (r < min)
r = min;
return r;
注:我有一个切换按钮,通过刚刚选择它使文本框为英寸或毫米。如果我选择mm,它可以正常工作,但是当我更改为英寸时,一切都会搞砸。是否有添加转换逻辑的地方(1英寸= 25.4毫米)。
答
我得到它使用Converter类并绑定它,但仍然有几个问题。特别感谢@Ed Plunkett @EdPlunkett,他以正确的方式引导我。
特别感谢t @EdPlunkett,他以正确的方式指引着我。 – user6850427