Реализация стандартных кнопок и поведения

146
24 апреля 2019, 16:50

Так как Window имеет WindowStyle="None" необходимо воссоздать стандартные кнопки:

  • Сворачивание приложения в трей
  • Разворот во всё окно и обратно
  • Выход из приложения
  • Перетаскивание

Откуда эти поведения можно выдернуть ?

Или может у кого есть в загашнике реализация всего этого ?

Answer 1
  • Сворачивание приложения в трей - WindowState = WindowState.Minimized; + метод Hide();
  • Разворот во всё окно и обратно - WindowState = WindowState.Maximized; (обратно: WindowState = WindowState.Normal;)
  • Выход из приложения - Close();, либо что то более кардинальное (Application.Current.Shutdown();)
  • Перетаскивание - Нужный элемент подписываем на событие зажатия клавиши мыши (MouseLeftButtonDown) и в обработчике вызываем DragMove();

Либо вовсе можно использовать WindowChrome, пример такого показан тут.

Использование WindowChrome:

К примеру у нас есть простое окно, у которого заданы следующие параметры: WindowStyle="None" и AllowsTransparency="True". Изначально оно по стандарту будет просто белое, без кнопок и каких либо элементов управления, как быть?

Добавляем для начала WindowChrome, делается это написанием нечто подобного:

<WindowChrome.WindowChrome>
    <WindowChrome/>
</WindowChrome.WindowChrome>

Уже на данном этапе у нас будет возможность передвижения окна за "шапку", контекстное меню при клике по "шапке", а также элементы изменения размера со всех сторон.

Работа с WindowChrome:

  • Если мы хотим изменить размер шапки, делаем это путем указания CaptionHeight с нужным размером у <WindowChrome/>.
  • Если хотим изменить рамки "ресайза", то меняем ResizeBorderThickness.
  • Если мы используем WindowChrome и затем устанавливаем кнопки (закрыть/свернуть/развернуть) там, где у нас CaptionHeight, то для их работы нужно будет установить WindowChrome.IsHitTestVisibleInChrome="True", иначе наши кнопки будут не активны.

Вот таким простым способом мы добавляем окну часть стандартного функционала.

READ ALSO
VSCode: Как сдвинуть выделенный код в multi-line режиме?

VSCode: Как сдвинуть выделенный код в multi-line режиме?

Всем привет! Банально не понимаю как сдвинуть выделенные строки кода на один пробел влево или вправо(имеется в виду не табуляция, а именно...

399
Сделайте ревью кода

Сделайте ревью кода

Сделал рефакторингКакая работа была проведена:

197
Подключится к MDB(MS Access) из PHP

Подключится к MDB(MS Access) из PHP

Как открыть файл базы MDB и выполнить запрос из под PHP ??? Люди добрые подскажите какие пакеты установить и как настроить на Debian Поиск информации...

153
Не передается значение value из select при отправке формы

Не передается значение value из select при отправке формы

При нажатии на кнопку submit файл indexphp обработка происходит у form

140