質問

コントロールをグリッドに入れました。コントロールは、System.windows.controls.buttonからのターンで導き出されたパブリッククラス「butbase」から派生しているとしましょう。通常、コードはコンパイルされ、アプリは正常に動作します。しかし、本当に迷惑なものがあります。

XAML-Designタブに切り替えようとすると、「ドキュメントルート要素はビジュアルデザイナーによってサポートされていない」と表示されます。下線付きとVS2010は、「Butbaseのインスタンスを作成できない」と述べていますが、通常はコンパイルされて実行できます。

私はVS2008で同じコードを試しましたが、Butbaseに公開されたパラメーターのないコンストラクターを見る必要があると言いました。

ここで何が恋しいですか?

役に立ちましたか?

解決

確実に ButBase ではありません abstract. 。デザイナーはそれらが好きではありません。

また、コンストラクターで面白いビジネスをしないようにしてください、 InitializedLoaded ハンドラー。面白いのは、データベースやデザイナーに干渉する可能性のある他のものに接続するなど、自明でないタスクが含まれます。そのようなコードは、デザイナーチェックで包む必要があります。デザイナーの存在をチェックする方法はいくつかありますが、私は次のように動作することがわかりました。

internal static class DesignModeChecker
{
    private static bool? _isInDesignModePriv;

    public static bool IsInDesignMode
    {
        get
        {
            if (!_isInDesignModePriv.HasValue)
            {
                _isInDesignModePriv = Process.GetCurrentProcess().ProcessName.ToLower().Trim() == "devenv" && !Debugger.IsAttached;
            }

            return _isInDesignModePriv.Value;
        }
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top