[英]Avoid XAML Designer error with custom controls
假設我有一個自定義控件,該控件繼承自另一個控件。 我想設置此控件的一些屬性,因此我在構造函數中添加了類似的內容,例如:
public class MyControl : Canvas
{
public MyControl()
{
if (getSomeTestValueFromAppSettings())
{
this.Background = ColorConverter.MyStaticBrushProperty1;
}
else
{
this.Background = ColorConverter.MyStaticBrushProperty2;
}
}
}
現在,在應用程序內一切正常,因此那里沒有問題。 關鍵是,如果在控件構造函數中添加類似的內容,則會出現XAML設計器錯誤,並告訴我無法創建控件的實例。
沒關系,因為構造函數當然會嘗試訪問應用程序的本地設置,並且它無法在XAML設計器中執行此操作。
我目前正在使用它作為變通方法:我只是將所有conde包裝在try / catch塊內的構造函數中,並且如果遇到異常(僅在XAML設計器中發生),則將其忽略。
這樣,代碼仍然可以在手機上正常工作,並且不會使XAMl Designer崩潰。 我認為這不是一個好的解決方案,在類構造函數中進行try / block並不是我認為的一種好的編程習慣。
我希望有一個類似“編譯器指令”的內容來告訴編譯器何時它實際上不在設備/仿真器上運行,而是在XAML設計器內部運行,但我沒有找到類似的東西。
您是否有關於解決該問題的建議或其他更好的主意?
謝謝!
塞爾吉奧
對於這種情況,實際上有一個內置方法。
只需使用此代碼
if (DesignerProperties.GetIsInDesignMode(this))
{
// Design-mode specific functionality
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.