Уверенность на основе другого класса
-
28-09-2019 - |
Вопрос
Я поместил контроль в сетку. Скажем, контроль получен из публичного класса «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;
}
}
}