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
开发者_如何学Go {
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
- Create a class derived from TypeConverter.
- Override GetStandardValues and GetStandardValuesSupported (and optionally GetStandardValuesExclusive).
- From GetStandardValues, return a collection containing the values you want to appear in the combo box.
- 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.
精彩评论