Wpf 创建UserControl DependencyProperty,其值可在下拉列表中选择(作为组合框)

Wpf 创建UserControl DependencyProperty,其值可在下拉列表中选择(作为组合框),wpf,combobox,properties,dependencies,Wpf,Combobox,Properties,Dependencies,我是WPF的初学者,现在我想制作一个WPF用户控件库,其中包括一个评级栏用户控件。创建评级栏的所有步骤都已完成,但我想添加一个属性评级值: public static readonly DependencyProperty RatingValueProperty = DependencyProperty.Register("RatingValue", typeof(int), typeof(RatingControl), new Framework

我是WPF的初学者,现在我想制作一个WPF用户控件库,其中包括一个评级栏用户控件。创建评级栏的所有步骤都已完成,但我想添加一个属性评级值:

public static readonly DependencyProperty RatingValueProperty =
            DependencyProperty.Register("RatingValue", typeof(int), typeof(RatingControl),
            new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, new PropertyChangedCallback(RatingValueChanged)));

public int RatingValue
        {
            get { return (int)GetValue(RatingValueProperty); }
            set
            {               
                SetValue(RatingValueProperty, value);                
            }
        }

private static void RatingValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
         //... change the rating value
        }
my UserControl的用户可以修改0到5之间的值,该值显示在属性窗口中的下拉列表组合框中,因为UserControl的某些现有属性,如可见性、窗口样式、背景

我该怎么办? 事先非常感谢

越南

创建从TypeConverter派生的类。 覆盖支持的GetStandardValues和GetStandardValues以及可选的GetStandardValues结论。 从GetStandardValues返回一个集合,其中包含要显示在组合框中的值。 将TypeConverterAttribute应用于RatingValue属性,指定类型转换器的类型。

另一方面,根据RatingValue的语义,您可以考虑将其作为枚举。这感觉有点奇怪,因为值是数字的-但它的优点是在类型级别约束值,并且它会自动为您提供一个组合框,您无需实现类型转换器。

感谢您的快速回答,但很抱歉我没有完全理解它们,你介意给我举个例子来说明这些解决方案吗?尤其是enum方法,看起来有趣且简单:非常感谢。enum方法只是创建一个enum类型的公共enum Rating{…},并将其用作RatingValue属性类型,而不是int。对于类型转换器方法,请参阅向下滚动到标题为“类型转换器”的部分,它为属性窗口提供标准值列表。顺便问一下,有没有一种方法可以创建元素名称为数字的枚举,如下所示:公共枚举评级为{1,2,3…}而不是{1=1,2,3…},因为它们总是要求名称…否,但您可以为枚举值创建友好的名称,例如使用值转换器。有关示例,请参见。