Pregunta

I coloca un control en una rejilla. Digamos que el control se deriva de la clase pública 'ButBase' que se deriva a su vez de System.Windows.Controls.Button. El código normalmente se compila y aplicación funciona muy bien. Pero hay algo muy molesto.

Cuando intenta cambiar a la solapa xaml-diseño dirá 'El elemento raíz del documento no es compatible con el diseñador visual', lo cual es normal y estoy totalmente de acuerdo con eso, pero la cosa es, que toda la código XAML está subrayado y VS2010 dice: 'no se puede crear una instancia de ButBase' aunque todavía normalmente compila y capaz de ejecutar

He intentado el mismo código en VS2008, se dice que necesita ver a un constructor sin parámetros pública en el ButBase, e incluso después de poner uno que mostró el mismo error.

¿Qué te extraño aquí?

¿Fue útil?

Solución

Asegúrese de que no es ButBase abstract. Diseñador no le gusta eso.

También asegúrese de que no se debe hacer ningún negocio divertido en su constructor, Initialized y Loaded manipuladores. Divertido incluye cualquier tarea no trivial, como conectarse a una base de datos o cualquier otra cosa que pueda interferir con el diseñador. Estos códigos se debe envolver con un diseñador-cheque. Hay un número de maneras de salir allí para comprobar si hay una presencia de diseñador pero he encontrado lo siguiente para bien de trabajo:

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;
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top