В качестве примера я буду ссылаться на элемент управления Label
из форм Xamarin.У него есть свойство, называемое FontSize
, и оно имеет тип double.
/// <summary>Gets the size of the font for the label.</summary>
/// <value>To be added.</value>
/// <remarks>To be added.</remarks>
[TypeConverter(typeof (FontSizeConverter))]
public double FontSize
{
get
{
return (double) this.GetValue(Label.FontSizeProperty);
}
set
{
this.SetValue(Label.FontSizeProperty, (object) value);
}
}
, хотя оно должно позволять вам только удваивать значение, когда вы пишете
<Label FontSize=""
, оно дает вам несколько вариантоввыбрать из (см. изображение ниже), но на самом деле он принимает и значение enum, и double.
Я думал, что это [TypeConverter(typeof (FontSizeConverter))]
, который сделал этовозможно, но когда я создал свое собственное настраиваемое свойство с тем же атрибутом, это не сработало.
Так что я хочу, чтобы иметь настраиваемое свойство типа double, int, string или что угодно, но показывать несколько предопределенных параметровиз enum, который будет обрабатываться преобразователем типов.
РЕДАКТИРОВАТЬ: Мой пользовательский TypeConverter
работает нормально, но проблема в том, что:
- Он не имеет Intellisense на XAML
- выдает ошибку на XAML
Invalid value for property 'FontSize': 'XXSmall'
, но все равно компилируется и работает