[英]How to create Intellisense compatible enum on custom bindable property
例如,我將引用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
正常工作,但問題是:
Invalid value for property 'FontSize': 'XXSmall'
XAML Invalid value for property 'FontSize': 'XXSmall'
上給出錯誤,但仍可編譯並正常工作 要使它適用於FontSize,要比將TypeConverter添加到主項目還要多一些工作。
Forms向設計器提供了一個特定的DLL,該DLL可以構建該列表,以便它可以顯示所有可用的命名字體大小,但也不會引發錯誤
然后將DLL的Forms包打包到所有不同目標的nuget包的Design目錄中https://github.com/xamarin/Xamarin.Forms/blob/master/.nuspec/Xamarin.Forms.nuspec#L137
表單在Visual中也做類似的事情,因此它也可以在智能感知中顯示它們
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.