Wpf 创建UserControl DependencyProperty,其值可在下拉列表中选择(作为组合框)
我是WPF的初学者,现在我想制作一个WPF用户控件库,其中包括一个评级栏用户控件。创建评级栏的所有步骤都已完成,但我想添加一个属性评级值: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
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…},因为它们总是要求名称…否,但您可以为枚举值创建友好的名称,例如使用值转换器。有关示例,请参见。