Вопрос

Я поместил контроль в сетку. Скажем, контроль получен из публичного класса «Butbase», который получен в свою очередь из системы. Windows.controls.Button. Код, как правило, компилирует и приложение работает просто отлично. Но есть что-то действительно раздражает.

Когда вы пытаетесь переключиться на вкладку XAML-Design, она скажет, что «элемент корневого документа не поддерживается визуальным дизайнером», что является нормальным, и я совершенно в порядке с этим, но дело в том, что весь код XAML Подчеркнуты и VS2010 говорит: «Невозможно создать экземпляр BotBase», хотя все еще обычно компилируется и может работать.

Я пробовал тот же код в VS2008, он сказал, что необходимо увидеть общедоступный параметр конструктора в BotBase, и даже после того, как я поставил один, он показал ту же ошибку.

Что мне здесь пропустить?

Это было полезно?

Решение

Убедись 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;
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top