別のクラスに基づくuielement
-
28-09-2019 - |
質問
コントロールをグリッドに入れました。コントロールは、System.windows.controls.buttonからのターンで導き出されたパブリッククラス「butbase」から派生しているとしましょう。通常、コードはコンパイルされ、アプリは正常に動作します。しかし、本当に迷惑なものがあります。
XAML-Designタブに切り替えようとすると、「ドキュメントルート要素はビジュアルデザイナーによってサポートされていない」と表示されます。下線付きとVS2010は、「Butbaseのインスタンスを作成できない」と述べていますが、通常はコンパイルされて実行できます。
私はVS2008で同じコードを試しましたが、Butbaseに公開されたパラメーターのないコンストラクターを見る必要があると言いました。
ここで何が恋しいですか?
解決
確実に ButBase
ではありません abstract
. 。デザイナーはそれらが好きではありません。
また、コンストラクターで面白いビジネスをしないようにしてください、 Initialized
と Loaded
ハンドラー。面白いのは、データベースやデザイナーに干渉する可能性のある他のものに接続するなど、自明でないタスクが含まれます。そのようなコードは、デザイナーチェックで包む必要があります。デザイナーの存在をチェックする方法はいくつかありますが、私は次のように動作することがわかりました。
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;
}
}
}
所属していません StackOverflow