Подклассы управляющих тем WPF, почему не только ЧАСТИЧНЫЙ подкласс

#wpf #themes #subclass

#wpf #темы #подкласс

Вопрос:

Так много чтения и так много о наследовании, я не могу найти прямых ответов, так что здесь.

Если у вас есть базовый класс, производный для выполнения определенных действий, внешнего вида или действия определенным образом, вы можете подклассировать его и получить всю функциональность родительского класса с лишь слегка измененным дифференциалом. То же самое, похоже, не совпадает с работой с темами WPF … более конкретно, с элементом управления combobox (аналогичные проблемы с текстовым полем, но это, очевидно, менее сложно).

Рассматривая примеры шаблонов элементов управления, они обсуждают всю его структуру, границы, фоны, глифы, действия, свойства и т. Д.

Если ЕДИНСТВЕННОЕ, что я хочу сделать со списком, это изменить его границу на красную, если в нем есть ошибка, похоже, мне нужно в основном переопределить все это и каким-то образом ввести мои пользовательские настройки триггера / цвет, который будет реализован.

Несколько похоже на элемент управления textbox и способ его создания. У него есть именованный элемент управления при попытке изменить цвет фона… вы не можете просто сказать … background = некоторое статическое значение кисти.

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

Я также вижу, что некоторые элементы управления состоят из ДРУГОГО элемента управления.Шаблоны, итак, как я могу подключиться к изменению настройки свойства только для одного элемента шаблона элемента управления… Например, в выпадающем списке есть шаблон управления для кнопки переключения. Исходя из этого, он имеет границу через x:Name=»Border», и я хочу изменить ЭТОТ элемент в производном стиле.

Спасибо

Ответ №1:

Возможно, я не понимаю ваш вопрос здесь. Но из того, что я получаю: да, вы не можете частично реализовать шаблоны, на самом деле я не знаю, как это может быть возможно. Но, если вы хотите изменить определенные вещи, вы, конечно, можете это сделать. Вы можете создавать стили, шаблоны, кисти и т. Д. В качестве DependencyProperties и использовать TemplateBinding для привязки к ним для данного дочернего элемента управления.

Помните, что WPF позволяет всегда изменять шаблон на лету. если бы мы могли частично изменить шаблон, это могло бы снизить производительность или могло бы стать запутанным и сложным. Тем не менее, вы можете сделать это с помощью ContentControls и TemplateBinding или просто триггеров.

Для моих пользовательских элементов управления, которые могут содержать несколько вспомогательных элементов управления, я обычно добавляю для них стиль. Например, пользовательский список со списком будет содержать ToggleButtonStyle .

Однако было бы неплохо добавить триггеры шаблона управления без необходимости переопределения шаблона.