Create UserControl DependencyProperty of which value can be chosen in dropdown list (as combo box)

℡╲_俬逩灬. 提交于 2019-12-14 03:15:10

问题


I'm a starter at WPF, now i would like to make a WPF userControl library which include a Rating bar userControl. All the steps of creating the rating Bar has been done, however i would like to add a property RatingValue:

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
        }

that the user of my UserControl can modify by a value from 0 to 5 that are shown in a dropdown list (combo box) in the Properties windows (as some exist properties of Usercontrols like Visibility, windows style, background ...)

How can i do? Thank you very much in advance,

Viet


回答1:


  1. Create a class derived from TypeConverter.
  2. Override GetStandardValues and GetStandardValuesSupported (and optionally GetStandardValuesExclusive).
  3. From GetStandardValues, return a collection containing the values you want to appear in the combo box.
  4. Apply TypeConverterAttribute to the RatingValue property, specifying the type of your type converter.

Alternatively, depending on the semantics of RatingValue, you might consider making it an enum. This feels a bit weird because the values are numeric -- but it would have the advantage of constraining the values at a type level, and it would automatically give you a combo box with no need for you to implement a type converter.



来源:https://stackoverflow.com/questions/2469010/create-usercontrol-dependencyproperty-of-which-value-can-be-chosen-in-dropdown-l

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!