簡體   English   中英

使用自定義控件避免XAML Designer錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM