Frage

legte ich eine Kontrolle in ein Raster. Lassen Sie uns sagen, dass die Kontrolle der öffentlichen Klasse abgeleitet ist ‚ButBase‘, die ihrerseits von System.Windows.Controls.Button abgeleitet wird. Der Code normalerweise kompiliert und App funktioniert gut. Aber es gibt etwas wirklich ärgerlich.

Wenn Sie versuchen, Schalter auf XAML-Design Registerkarte wird es sagen: ‚Das Dokument Wurzelelement wird nicht vom visuellen Designer unterstützt‘, was normal ist und ich bin völlig in Ordnung mit dem, aber die Sache ist, dass alle xAML-Code wird unterstrichen und VS2010 sagt:. ‚Es kann keine Instanz von ButBase schaffen‘, obwohl nach wie vor normal kompiliert und in der Lage zu laufen

Ich habe den gleichen Code in VS2008 versucht, hieß es, dass der Bedarf einen öffentlichen parameterlosen Konstruktor in der ButBase zu sehen, und auch nachdem ich ein legte sie den gleichen Fehler zeigte.

Was vermisse ich hier?

War es hilfreich?

Lösung

Stellen Sie sicher, ButBase ist nicht abstract. Designer nicht, wie sie.

Stellen Sie außerdem sicher, dass kein lustiges Geschäft in Ihrem Konstruktor zu tun, Initialized und Loaded Handler. Lustige umfasst alle nicht-triviale Aufgaben, wie eine Verbindung zu einer Datenbank oder irgendetwas anderes, das mit dem Designer stören könnte. Ein solcher Code sollte mit einem Designer-Check gewickelt werden. Es gibt eine Reihe von Möglichkeiten da draußen für eine Anwesenheit von Designern zu überprüfen, aber ich habe folgende Arbeit ok gefunden:

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;
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top