Как сделать окно на весь экран wpf

Обновлено: 06.07.2024

Мне нужно изменить панель задач windows в моем приложении WPF. Для этого я установил WindowStyle="None" , Что означает отключить панель задач windows и сделать пользовательскую панель задач с кнопками для восстановления, минимизации и закрытия приложения. Теперь моя проблема в том, что если приложение находится в режиме максимизации, я не вижу меню "Пуск" в windows.

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

Как я могу создать свою собственную панель задач и увидеть меню "Пуск" windows, когда я развернул его? Есть ли окно свойств в xaml, которое может его установить?

Сделать WPF-приложения в полноэкранный режим (обложка меню)

Я хотел бы сделать мое приложение WPF полноэкранным. Прямо сейчас меню "Пуск" предотвращает его от покрытия всего и сдвигает мое приложение вверх. Это то, что у меня есть для моего главного окна.код xaml:

вы, вероятно, не хватает WindowState="Maximized" , попробуйте следующее:

состояние окна в развернутом и стиль окна В Нет

  • присвоить имя окну (x: Name = "Домашняя страница")
  • в конструкторе просто установите свойство WindowState в развернутое следующим образом

работа с несколькими экранами

когда ты это делаешь код фокус в том, чтобы вызвать

и затем

чтобы получить его для отображения на панели задач.

Как центрировать приложение WPF на экране?

Я хочу, чтобы центр моего приложения WPF при запуске на основном экране. Я знаю, что должен установить свое окно.Слева и мое окно.Топ, но где я могу получить значения?

нашел System.Windows.Forms.Screen.PrimaryScreen , который, по-видимому, не WPF. Есть ли альтернатива WPF, которая дает мне разрешение экрана или что-то в этом роде?

2011-02-18 18:30:14 Indy9000 2011-05-24 16:44:20 Pratik Deoghare

вы все еще можете использовать класс Screen из приложения WPF. Вам просто нужно обратиться к системе.Окна.Формирует сборку из вашего приложения. Как только вы это сделаете, (и ссылочная система.Рисунок для примера ниже):

. прекрасно работать.

вы рассматривали настройка главного окна WindowStartupLocation свойство CenterScreen?

Как насчет класса SystemParameters в PresentationFramework? Он имеет WorkArea свойство, которое кажется то, что вы ищете.

но, почему бы не установить окно.WindowStartupLocation работает? CenterScreen-это одно из значений перечисления. Вам нужно настроить центровку?

вам не нужно ссылаться на System.Windows.Forms сборка из вашего приложения. Вместо этого, вы можете использовать System.Windows.SystemParameters.WorkArea . Это эквивалентно System.Windows.Forms.Screen.PrimaryScreen.WorkingArea !

для центра экрана используйте:

для центра родительского окна используйте:

Как удалить свернуть и развернуть из изменяемого размера окна в WPF?

WPF не предоставляет возможность иметь окно, которое позволяет изменять размер, но не имеет кнопок максимизации или минимизации. Я хотел бы сделать такое окно, чтобы у меня были диалоговые окна с возможностью изменения размера.

Я украл некоторый код, который я нашел на форумах MSDN и сделал метод расширения в классе Window, например:

единственное, что нужно помнить, это то, что по какой-то причине это не работает из конструктора окна. Я обошел это, бросив это в конструктор:

надеюсь, что это помогает!

enter image description here

один из способов-установить ResizeMode="NoResize" . Он будет вести себя так.

надеюсь, это поможет!



Не знаю, если это работает для вашего Треб. визуально.. Это

если кто-то использует окно Devexpress (DXWindow) принятый ответ не работает. Один уродливый подход

вы можете установить ResizeMode= "NoResize" окна, если вы хотите удалить кнопку Свернуть и развернуть

вот решение, которое я использую. Обратите внимание, что кнопка "развернуть" по-прежнему отображается.

разметка:

код:

Как сделать отображение Windows Forms/WPF приложения на полный экран без рамки?

  • Вопрос задан более трёх лет назад
  • 13383 просмотра

Решения вопроса 1

Для Windows Forms:

Ответ написан более трёх лет назад

Ответы на вопрос 1

Зачем еще лишний код строчить.А не проще в Студии в свойствах окна все выставить.

Ответ написан более трёх лет назад

hardtendo

Разве этот же самый код не появится в "MyForm".Designer.cs?

Ну во первых лучше в студию втулить как отобразить чем в код. Но даже если в код пихать то в инициализацию.

WPF: Нестандартное окно

На днях, после долгого перерыва, надо было поработать на WPF, и возникло желание заменить поднадоевший стандартный вид окон Windows 7 на что-нибудь более вдохновляющее, скажем в стиле Visual Studio 2012:



Переходить на Windows 8 ради этого еще не хотелось, как и добавлять в проекты ссылки на метро-подобные библиотеки и разбираться с ними — это будет следуюшим шагом. А пока было интересно потратить вечер и добиться такого результата с минимальными изменениями рабочего кода. Забегая вперед, скажу что результат, как и планировалось, получился довольно чистым: фрагмент следующего кода, если не считать нескольких аттрибутов пропущенных для наглядности, это и есть окно с первого скриншота. Все изменения ограничились заданием стиля.



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

Основная проблема

За всю историю развития WPF в этом отношении мало что изменилось. К счастью, у меня были исходники из старинного поста Алекса Яхнина по стилизации под Офис 2007, которые он писал работая над демо проектом по популяризации WPF для Микрософта, так что с нуля начинать мне не грозило.



В итоге нам надо получить один стиль, и по возможности, без дополнительных контролов: в дереве проекта XAML и код стиля расположились в директории CustomizedWindow, а основное окно в корне проекта.

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

Создаем стиль

Сразу же определим кнопки управления окном в стиле Студии 2012. Это будет единственный дополнительный глобальный стиль на случай если потом возникнет желание использовать такие кнопки в приложении.



Нам нужна функциональность обычной кнопки, но с очень примитивной отрисовкой — фактически только фон и содержимое.

XAML стиля кнопки

Для текста заголовка используем стандартный шрифт Segoe UI. Единственная особенность здесь — убедиться, что текст отрисован без размытия, иначе заголовок окна будет выглядеть… плохо он будет выглядеть — как во второй строчке на скриншоте.



Остальные детали менее существенны, но если интересно, добро пожаловать в исходники.

Оживляем окно

Помимо реакции на кнопки и иконку, окно должно перемещаться и изменять размер при drag'е за заголовок, за края и уголки. Соответствующие горячие зоны проще всего задать при помощи невидимых контролов. Пример для левого верхнего (северо-западного) угла.

При наличие атрибута Class в ресурсах, методы этого класса можно вызывать просто по имени как обычные обработчики событий, чем мы и воспользовались. Сами обработчики, например MinButtonClick и OnSizeNorthWest, выглядят примерно так:

DragSize далее вызывает WinAPI (исходник) и заставляет Windows перейти в режим измененения размера окна как в до-дотнетовские времена.

Почти готово. Зададим триггеры для контроля изменений интерфейса при изменении состояния окна. Вернемся в XAML и, например, заставим StatusBar'ы изменять цвет в зависимости от значения Window.IsActive.

XAML для StatusBar'а

Обратите внимание, что этот стиль влияет не на темплэйт окна, а на контролы помещенные в наше окно. Помните самый первый фрагмент с пользовательским кодом?

Собираем все вместе

Все. Нам осталось только подключить стиль к проекту через ресурсы приложения:



И можно использовать его в любом окне.

Нестандартное окно WPF. Разворачивание на весь экран

Помощь в написании контрольных, курсовых и дипломных работ здесь.

94731 / 64177 / 26122 Ответы с готовыми решениями:



Как развернуть нестандартное окно во весь экран?
Подскажите, как развернуть нестандартное окно во весь экран? При разворачивании, окно закрывает.



Нестандартное окно в WPF. Изогнутый текст
Есть вот такое вот окно в приложении WPF: Внутри второго круга мне будет необходимо размещать.

Разворачиваясь на весь экран нестандартное окно уходит за его пределы на 7 пикселей с каждой стороны
Чем это обусловлено? Мне просто нужно вычислять эти отступы, чтобы разворачивая окно оно не.



Разворачивание формы на весь экран
Знатоки, реально ли развернуть форму на весь экран со всеми компонентами кликнув: То есть если.

Для решения этой проблемы есть масса вариантов, например так, или посмотреть как подобный функционал реализован в MahApps, или попробовать решить свою задачу посредством свойств предоставляемых SystemParameters.

Искренне недоумеваю зачем начинать осваивать wpf с создания кастомного окна.

Dee,Спасибо буду разбираться.

Потому что это это не совсем добровольное решения начать осваивать данную технологию, а вынужденная написанием дипломом. В связи с тем что winForm не очень гибок в оформлении пришлось переходить на WPF.

Не проще ли в таком случае взять уже готовое? MahApps.Metro, к примеру, разрабатывается уже не один год и позволяет легко сделать приличный metro-подобный GUI.

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

87844 / 49110 / 22898

Помощь в написании контрольных, курсовых и дипломных работ здесь.



Запретить разворачивание окна программы на весь экран
Здравствуйте, как сделать так, чтобы программу нельзя было развернуть на весь экран? Это же.

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



Корректное разворачивание на весь экран формы с несколькими контролами
Здравствуйте. У меня есть форма, на ней UC на котором два ListView. Один занимает верхнюю.

Окно во весь экран
Скажите пожалуйста как запустить сам паскаль на весь экран если при нажатии alt+enter он.

Развернуть приложение на весь экран

Помощь в написании контрольных, курсовых и дипломных работ здесь.

94731 / 64177 / 26122 Ответы с готовыми решениями:

MahApps.Metro: развернуть во весь экран
Доброго времени суток. Я уже поднимал этот вопрос. Но результата пока 0. Суть такова. Как.



Как развернуть нестандартное окно во весь экран?
Подскажите, как развернуть нестандартное окно во весь экран? При разворачивании, окно закрывает.

Свой плеер: развернуть его при двойном клике на весь экран
Всем привет!" Сделал простенького плеера но еще хочу чтоб при двойном клике на изображении в.

WPF окна. Стиль None. Растянуть на весь экран.

Если вы вставите себе в любой WPF проект этот код, например на обработчик нажатия кнопки какой нибудь, то у вас сразу без проблем это будет работать. Так вот как видите курсор принимает вид "Рука" и окно растянуто на весь экран и поверх панели задач. Так вот когда вы будете водить по нему курсором, он будет иметь вид руки. А теперь попробуйте переместить курсор в правый угол, там он смениться на стрелочку, так как выйдет за пределы окна. Но я не пойму почему так? Ведь окно растягивается на весь экран. Вот эта проблема портит мне всю малину.
Подскажите как можно обойти эту проблему? Или может это как то решается установкой каких нибудь свойств окна? Или может как-то возможно ограничить движение курсора внутри формы, пока её не закроют?

314 kb) этой беды.

Я даже решил её так (не забываем это WPF, не WinForms):

Но всё равно это не давало мне покоя 94731 / 64177 / 26122 Ответы с готовыми решениями:

WPF, изменить стиль окна
Здравствуйте, снова прошу помощи, как изменить стиль окна messagebox ?

Нестандартное окно WPF. Разворачивание на весь экран
Доброго времени суток, форумчане. Начала осваивать технологию WPF. И первым делом при попытке.

Растянуть на весь экран
Всем привет. Создаю небольшую игру-стрелялку. Раньше игры создавал с настройкой расширения экрана и.

87844 / 49110 / 22898

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Растянуть форму на весь экран
Здравствуйте! Скажите как можно растянуть форму на весь экран. Только поймите меня правильно я не.



Растянуть на весь экран линию hr
Нужно растянуть на весь экран линию hr, поставил свойство position: relative и ширину 100%, а не.

Растянуть svg на весь экран
Привет. Подскажите, пожалуйста, как растянуть svg на весь экран и возможно ли это вообще. Например.

Растянуть видео на весь экран
Как принудительно растянуть videoview на весь экран?

При создании окна WPF с AllowsTransparency="True" WindowStyle="None" и максимизации его с помощью this.WindowState = WindowState.Maximized; окно становится больше, чем мой экран.

При настройке AllowTransparency="False" у меня есть граница вокруг моего окна, но окно не будет больше моего экрана.
В моем случае у меня есть экран 1920x1080, и окно становится 1934x1094.
На моем экране 1280x1024 окно станет 1294x1038.
Окно станет таким же большим, как и включен ли AllowTransparency или нет, но с его отключением он работает правильно.

Настройка AllowTransparency перед максимизацией работы doen't и выбрасывает InvalidOperationException.

Как получить окно WPF без рамки в стиле Windows, но все же максимально правильно?

ОТВЕТЫ

Ответ 1

Это кажется довольно распространенной проблемой. Похоже, вам придется привязать свой рост и ширину к фактической высоте/ширине экрана, как указано в этой статье StackOverflow:

У меня есть приложение wpf без окон, и всякий раз, когда я устанавливаю состояние окна как максимальное, оно максимизирует его на основном дисплее.

Я бы хотел, чтобы он максимально увеличивал количество отображаемых приложений.

Есть идеи, как бы я это сделал?

Мой код на данный момент просто

задан 20 мая '11, 08:05

КОГДА вы сказали "без окон", вы имели в виду без полей? - Tim

Да, без полей, в основном я имел в виду, что Window.WindowStyle не имеет значения - electricsheep

Когда я разворачиваю окно, оно всегда разворачивается на экране, на котором оно находится. Это работает, когда вы задаете окну рамку? - RandomEngy

WindowState.Maximized работает нормально, но когда использую WindowState.Normal , окно не может быть восстановлено. - januw a

11 ответы

Я включил эту строку в свой конструктор MainWindow (первый элемент управления):

Клянусь, это продолжает показывать, что в WPF самые простые ответы иногда труднее всего найти! Спасибо за этот пример. - Неизвестный кодер

Из-за панели задач следует использовать размер рабочей области пользователя:

Вы можете использовать это в конструкторе представления

Если вы хотите установить его в левом углу, добавьте это (this.Top = SystemParameters.WorkArea.Top; this.Left = SystemParameters.WorkArea.Left;) - user1520494

Это работает только для основного экрана. Дополнительные экраны недоступны через SystemParameters и могут иметь другие размеры и повороты. - Всегдаучимся

Я не уверен, что получил ответ. Я создал образец приложения с

Я создал кнопку, и обработчик кликов сделал это -

Я подключил обработчик MouseLeftButtonDown для окна, чтобы перетащить его.

Вопрос с 7 отзывами заслуживает что собой представляет правильный ответ. : D

Используйте это окно вместо обычного окна, и тогда Maxmize / Minimize / normalize позаботятся о себе сами.

Импорт и объявления DLL

ответ дан 12 мар '12, в 21:03

Я следил за вашим кодом, но у меня появляются странные функции. Не могли бы вы взглянуть на мою вопрос? - Дели

Это не удается при максимальном увеличении на дополнительном мониторе, если он больше основного. - Мюррей

Вы можете использовать описанные функции в Windows.Forms.Screen, чтобы получить текущий экран. Тогда, возможно, установка StartupLocation окон на этот экран (перед максимизацией, как вы уже сделали) может достичь того, что вы хотите, но я не нашел времени, чтобы попробовать это сам, если честно.

ответ дан 23 мая '17, 11:05

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

ответ дан 23 мая '17, 13:05

Мы не можем развернуть окно до тех пор, пока оно не загрузится. Итак, подключив событие Loaded для fullScreenWindow и обработав событие в следующих строках:

ответ дан 28 окт '12, 07:10


Это не правда! Вы можете без проблем реализовать ctor Это прекрасно работает! - peter70

Я увеличил свое приложение на дополнительном экране, выполнив это

Добавьте это вверху главного окна:

Добавьте это в обработчик максимизации:

ответ дан 14 дек '17, 10:12

ответ дан 09 апр.


Репутация: 1
Всего: 1

Понадобилось мне растянуть окно на весь экран. Делаю я это так:

Код

//Глобальная переменная
Window win = new Window();
//======================

//====== Это содержимое нужно куда нибудь вставить, например обработчик нажатия на кнопке ======
if (win == null)
win = new Window();
>
win.WindowState = System.Windows.WindowState.Maximized;
win.WindowStyle = System.Windows.WindowStyle.None;
win.Cursor = System.Windows.Input.Cursors.Hand;
//Добавим кнопку "Закрыть" для удобства
Button btnClose = new Button();
btnClose.FontSize = 48;
btnClose.Content = "Закрыть";
btnClose.Margin = new Thickness(300, 400, 300, 400);
btnClose.Click += new RoutedEventHandler(btnClose_Click);

//Обработчик закрытия этого окна
void btnClose_Click(object sender, RoutedEventArgs e)
win.Close();
win = null;
>

Если вы вставите себе в любой WPF проект этот код, например на обработчик нажатия кнопки какой нибудь, то у вас сразу без проблем это будет работать. Так вот как видите курсор принимает вид "Рука" и окно растянуто на весь экран и поверх панели задач. Так вот когда вы будете водить по нему курсором, он будет иметь вид руки. А теперь попробуйте переместить курсор в правый угол, там он смениться на стрелочку, так как выйдет за пределы окна. Но я не пойму почему так? Ведь окно растягивается на весь экран. Вот эта проблема портит мне всю малину.
Подскажите как можно обойти эту проблему? Или может это как то решается установкой каких нибудь свойств окна? Или может как-то возможно ограничить движение курсора внутри формы, пока её не закроют?

Репутация: 22
Всего: 87

В твоём коде про курсор ничего не написано и, соответственно, никакой руки мы не увидим при использовании этого кода (может ты забыл строку win.Cursor = Cursors.Hand?). Я попробовал и особо ни в чём не разочаровался - курсок "рука" у меня был везде где только можно (ещё раз - при наличии строчки win.Cursor = Cursors.Hand). Может я чего не понял в твоей проблеме?

Репутация: 1
Всего: 1

А точно. Всё добавил в код. Нет, у меня курсор справа выходит за пределы окна почему-то. Сейчас я попробую скриншотов сделать.

user posted image

Вот у меня справа по всему окну такая полоска.

Репутация: 22
Всего: 87

Репутация: 1
Всего: 1

Вот записал видео. WMV формат. Всё вроде отлично видно, разрешение экрана уменьшил, вроде размер не большой получился. А скриншот есть в ответе выше.

Присоединённый файл ( Кол-во скачиваний: 7 )
video.rar 314,01 Kb

Репутация: 1
Всего: 1

Проблема решилась сама собой, перезагрузил компьютер, проблема исчезла. Мде, я вчера весь вечер просидел над этой бедой, а это просто какой-то глюк.
Я даже решил её так:

Код

System.Drawing.Rectangle winRect = new System.Drawing.Rectangle(0, 0,
(int)SystemParameters.PrimaryScreenWidth - 2,
(int)SystemParameters.PrimaryScreenHeight - 2);
System.Windows.Forms.Cursor.Clip = winRect;

Но всё равно мне не давало это покоя.

Репутация: 1
Всего: 1

Вот опять появилась проблема. Курсор выходит за пределы формы. То есть справа получается форма не достаёт до края экрана. А это сильно мешает, так как выделяя рамку на экране, курсор выходит за пределы формы и начинаются всякие проблемы, которые решить кодом выше не реально. Так как это не постоянно. Может это из-за полноэкранных игр? Так как я одну свернул игру, потом запустил программу и опять эта беда. Может это вообще недоработка Framework?

Вот выключил игру и всё закрыл, проблема осталась. Далее жму ПКМ на рабочем столе Windows 7 - "Персонализация", там выбираю другую тему, экран как бы дёргается, все ярлыки на рабочем столе перерисовываются, запускаю программу всё проблема исчезла. Что это может быть? И можно ли такую перерисовку сделать программно?

Подсказали, что причина может быть в сдвиге растянутой формы, после включения/выключения игры (ну это я и сам понимал в принципе), так как форма растянута на весь экран, то по её краям есть как бы рамка тонкая, вот если добавить в код это:

Код

win.ResizeMode = System.Windows.ResizeMode.NoResize;

То проблема отпадает.

Читайте также: