【发布时间】:2019-06-07 20:26:24
【问题描述】:
作为示例,我将引用 Xamarin Forms 中的 Label 控件。它有一个名为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=""
它为您提供了一些可供选择的选项(见下图),但它实际上同时接受枚举值和双精度值。
我认为是 [TypeConverter(typeof (FontSizeConverter))] 使这成为可能,但是当我创建自己的具有相同属性的自定义属性时,它并没有成功。
所以我想要的是拥有一个 double、int、string 或其他类型的自定义属性,但显示几个来自枚举的预定义选项,这些选项将由类型转换器处理。
编辑:我的自定义 TypeConverter 工作正常,但问题是:
- XAML 上没有 Intellisense
- 它在 XAML
Invalid value for property 'FontSize': 'XXSmall'上给出错误,但它仍然可以编译和工作
【问题讨论】:
标签: c# visual-studio xaml xamarin.forms