У приложения есть стандартные кнопки свернуть и закрыть. Но меня они не устраивают. Нужно сделать свои кнопки. Поставил задачу сделать кнопки с прозрачным фоном.
Должно выглядеть так:
А при наведении курсора цвет фона и значка менялся:
Начал делать реализацию так:
Однако, так как я новенький в wpf, у меня возникло несколько вопросов:
Нет ли более простого способа, чем рисовать крестик и палку кодом? Может эти кнопки уже есть?
Как выполнить изменения стиля сразу 2-ух объектов? В интернете есть примеры с изменением цвета фона кнопки при наведении, однако те примеры с наведением на кнопку. У меня же наведение может коснуться самого значка на кнопке и не факт, что указатель будет находиться за кнопкой.
Правильно ли я вообще начал реализовывать это дело. Помещать кнопку и значок в grid?
Я не жду, что кто-то сделает готовый пример (хотя был бы очень признателен реализованному простому способу). Мне главное, чтобы натолкнули на верный путь, пояснив вопросы.
Ответ
Для начала, всё не проще, а сложнее.
Если просто нарисовать кнопки, то они не попадут в non-client area. Поэтому вы должны поместить их туда, используя WindowChrome, например, как описано в этом вопросе: WPF Создание кастомного стиля окна с тенью
Затем, по поводу отрисовки крестиков. Нет, в WPF нету встроенного крестика, потому что он для каждой системы свой (посмотрите, как выглядит он на Windows 7, и как на Windows 10), а также зависит от системных настроек (выбранной цветовой схемы, включенного или нет режима увеличения и/или повышенной контрастности и т. д.). Одна строчка нарисованного руками крестика — не слишком сложное требование.
Я бы тем не менее поместил крестик внутрь кнопки, и подменил шаблон:
Оффтопик: Вы, судя по коду, пишете XAML через визуальный редактор. Это приводит к достаточно неоптимальному коду, и выводит из игры layout manager. (Например, вы размещаете кнопку на экране конструкциями наподобие Margin="382,10,23,0". Не делайте так, используйте layout manager вручную.)
Комментариев нет:
Отправить комментарий