Domanda

I collocato un controllo in una griglia. Diciamo che il controllo è derivata dalla public class 'ButBase' che deriva a sua volta da System.Windows.Controls.Button. Il codice compila normalmente e applicazione funziona bene. Ma c'è qualcosa di davvero fastidioso.

Quando si tenta di passare alla scheda XAML-design si dirà 'L'elemento radice del documento non è supportata dal visual designer', che è normale e io sono totalmente d'accordo con questo, ma la cosa è, che tutti i XAML è sottolineato e VS2010 dice:. 'non è possibile creare un'istanza di ButBase' anche se ancora compila normalmente e in grado di eseguire

ho provato lo stesso codice in VS2008, ha detto che ha bisogno di vedere un costruttore senza parametri pubblico nella ButBase, e anche dopo ho messo uno che ha dimostrato lo stesso errore.

Cosa mi manca qui?

È stato utile?

Soluzione

Assicurarsi ButBase non è abstract. Designer non lo fa come quelli.

Inoltre assicuratevi di non fare qualsiasi attività divertente nel costruttore, Initialized e Loaded gestori. Divertente comprende qualsiasi attività non banali, come la connessione a un database o qualsiasi altra cosa che potrebbe interferire con il progettista. Tale codice dovrebbe essere avvolto con un designer-check. Ci sono un certo numero di vie d'uscita lì per controllare che la presenza del designer, ma ho trovato il seguente al lavoro 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;
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top