В настоящее время этот элемент Button
Button, указав новый шаблон с применением синтаксиса "свойство-элемент". Шаблон придаст элементу управления округлый вид.
VerticalAlignment="Center"
HorizontalAlignment="Center"
FontWeight="Bold" FontSize="20" Content="OK!"/>
Здесь определен шаблон, который состоит из именованного элемента Grid
Ellipse и Label. Поскольку в Grid не определены строки и столбцы, каждый дочерний элемент укладывается поверх предыдущего элемента управления, позволяя центрировать содержимое. Если вы теперь запустите приложение, то заметите, что событие Click будет инициироваться только в ситуации, когда курсор мыши находится внутри границ элемента Ellipse (т.е. не на углах, окружающих эллипс). Это замечательная возможность архитектуры шаблонов WPF, т.к. нет нужды повторно вычислять попадание курсора, проверять граничные условия или предпринимать другие низкоуровневые действия. Таким образом, если шаблон использует объект Polygon для отображения какой-то необычной геометрии, тогда можно иметь уверенность в том, что детали проверки попадания курсора будут соответствовать форме элемента управления, а не более крупного ограничивающего прямоугольника.Шаблоны как ресурсы
В текущий момент ваш шаблон внедрен в специфический элемент управления Button
Button на уровень приложения, вырезав определение шаблона из разметки Button и вставив его в дескриптор Application.Resources внутри файла Арр.xaml. Добавьте атрибуты Key и TargetType:
HorizontalAlignment="Center"
FontWeight="Bold" FontSize="20" Content="OK!"/>
Модифицируйте разметку для Button
Click="myButton_Click"
Template="{StaticResource RoundButtonTemplate}">
Из-за того, что этот ресурс доступен всему приложению, можно определять любое количество круглых кнопок, просто применяя имеющийся шаблон. В целях тестирования создайте два дополнительных элемента управления Button
Click для них не нужно):
Click="myButton_Click"
Template="{StaticResource RoundButtonTemplate}">
Template="{StaticResource RoundButtonTemplate}">
Template="{StaticResource RoundButtonTemplate}">
Встраивание визуальных подсказок с использованием триггеров
При определении специального шаблона также удаляются все визуальные подсказки стандартного шаблона. Например, стандартный шаблон кнопки содержит разметку,которая задает внешний вид элемента управления при возникновении определенных событий пользовательского интерфейса, таких как получение фокуса, щелчок кнопкой мыши, включение (или отключение) и т.д. Пользователи довольно хорошо приучены к визуальным подсказкам подобного рода, т.к. они придают элементу управления некоторую осязаемую реакцию. Тем не менее, в шаблоне RoundButtonTemplate
Задачу можно решить с применением триггеров, как вы только что узнали. Для простых операций триггеры работают просто великолепно. Существуют дополнительные способы достижения цели, которые выходят за рамки настоящей книги, но больше информации доступно по адресу https://docs.microsoft.com/ru-ru/dotnet/desktop/wpf/controls/how-to-create-apply-template