Question

I a placé une commande dans une grille. Disons que le contrôle est dérivé de la classe publique « ButBase » qui est dérivé à son tour de System.Windows.Controls.Button. Le code compile normalement et l'application fonctionne très bien. Mais il y a quelque chose de vraiment ennuyeux.

Lorsque vous essayez de passer à l'onglet XAML-conception, il dira « L'élément racine du document est pas pris en charge par le concepteur visuel », ce qui est normal et je suis tout à fait d'accord avec cela, mais la chose est, que tous les le code XAML est souligné et VS2010 dit:. « Impossible de créer une instance de ButBase », bien que toujours normalement et compile en mesure d'exécuter

J'ai essayé le même code dans VS2008, il a dit que besoin de voir un constructeur parameterless public dans le ButBase, et même après que je mets un, il a montré la même erreur.

Que me manque ici?

Était-ce utile?

La solution

Assurez-vous ButBase n'est pas abstract. Designer ne pas comme ceux-ci.

Assurez-vous également de ne pas faire toute entreprise drôle dans votre constructeur, les gestionnaires de Initialized et Loaded. Drôle inclut toutes les tâches non triviales, comme la connexion à une base de données ou toute autre chose qui pourrait interférer avec le concepteur. Tout code tel doit être enveloppé avec un chèque de concepteur. Il y a plusieurs façons là-bas pour vérifier une présence de designer, mais j'ai trouvé ce qui suit pour le travail ok:

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;
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top