C# 创建一个dependencProperty,它接受C中的任何枚举?

C# 创建一个dependencProperty,它接受C中的任何枚举?,c#,enums,dependency-properties,C#,Enums,Dependency Properties,我想在UserControl中包含一个“units”dependecProperty。单位在单独的枚举中定义,例如 public enum TemperatureUnits { Celcius, Fahrenheit, } public enum PressureUnits { Psi, Bar, } 因此DependencyProperty需要能够接受任何类型的枚举。我尝试使用“泛型”DependencyProperty,使用Enum作为类型,如下所示,但它

我想在UserControl中包含一个“units”dependecProperty。单位在单独的枚举中定义,例如

public enum TemperatureUnits {
    Celcius,
    Fahrenheit,
}

public enum PressureUnits {
    Psi,
    Bar,
}
因此DependencyProperty需要能够接受任何类型的枚举。我尝试使用“泛型”DependencyProperty,使用Enum作为类型,如下所示,但它崩溃了,说默认值无效

public static readonly DependencyProperty UnitsProperty = DependencyProperty.Register("Units",
        typeof(Enum), typeof(DialInputWidget), new PropertyMetadata(0, UnitsPropertyChanged));

如何实现这一点?

尝试使用int而不是Enum


另外,默认值不是可选的吗?省略它,它将在枚举中被初始化为等效的0。

这种方法有什么特殊原因吗?为什么要这样做?用户控件是一个可以显示压力、温度或其他信息的输入拨号盘,还有另一个DependencyProperty枚举,用于配置。但是,根据单位,其行为略有不同,例如,华氏度以整步递增,摄氏度以半步递增。当我写XAML时,我想去极化地声明,例如“我想要一个刻度盘来显示Celcius的温度”,如果你用int而不是Enum,它能工作吗?@Brendan考虑到在物理世界中,我们有有限数量的不同类型的单位,我想我个人建议做一个通用的抽象类,使用类似where-TEnum:struct的泛型DependencyProperty,IConvertible和针对不同单元类型的单独派生控件。IMHO对任何单元类型都有一个通用控件,它对一个特定单元类型的一个特定实例有一个非常特定的处理,这是不可靠的。这种方法还确保了类型安全-无单元。Celcius通过这种方式进行压力控制。