Окно без полей занимает больше места, чем мое разрешение экрана

Я создал приложение без полей в WPF, и оно работает довольно хорошо. Однако, когда я устанавливаю WindowState на полный экран, приложение занимает больше места, чем мое разрешение экрана, поэтому за пределами экрана во всех направлениях появляются пиксели! (похоже, что некоторые жестко заданные отрицательные поля добавлены, чтобы скрыть границу по умолчанию)

Любые идеи, как предотвратить это?

Мой xaml:

<Window x:Class="MyApp.Shell"
    WindowStyle="None"
    BorderThickness="0"
    AllowsTransparency="True"
    Background="Transparent"
    ResizeMode="CanResizeWithGrip"
    WindowState="{Binding MainApplicationWindowState}"
    ...

Кроме того, еще одна проблема, которую я видел, состоит в том, что панель инструментов / панель задач Windows покрыта в полноразмерном состоянии, поэтому похоже, что используется «фактическая» высота экрана, а не «доступная» высота экрана, то есть высота экрана минус панель инструментов Windows / Панель задач!

Кто-нибудь нашел решение этих проблем?

Спасибо

 Momo18 янв. 2019 г., 19:59
Вау, 9 лет назад: D Проблема появляется только тогда, когда установлена AllowsTransparency или WindowChrome?

Ответы на вопрос(6)

Новая функция .NET решила эту проблему. Оставь свойWindowStyle="SingleBorderWindow" или же"ThreeDBorderWindow" ПокидатьResizeMode="CanResize", затем добавьте это к XAML внутри

<Window>
    <WindowChrome.WindowChrome>
        <WindowChrome GlassFrameThickness="0" CornerRadius="0" CaptionHeight="0" 
            UseAeroCaptionButtons="False" ResizeBorderThickness="7" />
    </WindowChrome.WindowChrome>
</Window>

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

 bwing06 февр. 2019 г., 16:49
Я только что попробовал это с WindowStyle = "None" и AllowsTransparency = "True", и это работает просто отлично. Это позволяет изменить размер, как если бы была граница, и когда окно развернуто, оно не закрывает меню «Пуск». (Я тестировал с .NET 4.7.2, не пробовал более ранние версии)
 Momo18 янв. 2019 г., 19:57
Не работает, и когда вы используете WindowStyle! = Нет, AllowTransparency должна быть ложной!
Решение Вопроса

XAML:

WindowStyle="None"
Left="0"
Top="0"
Width="{Binding WPFSettings.Width}"
Height="{Binding WPFSettings.Height}">

Visual Basic:

Public Class WPFSettings
   Public ReadOnly Property Width() As Double
      Get
         Return System.Windows.SystemParameters.PrimaryScreenWidth
      End Get
   End Property

   Public ReadOnly Property Height() As Double
      Get
         Return System.Windows.SystemParameters.PrimaryScreenHeight
      End Get
   End Property
End Class

Это работает довольно хорошо.

 code-zoop19 янв. 2010 г., 18:38
Благодарю. Попробую это. Одна проблема, которую я вижу с PrimaryScreenHeight, это когда используется второй монитор, но это должно быть довольно просто обойти! Одна запись; Так как вы используете Top и Left, как насчет Bottom и Right? Будут ли они двигаться дальше от экрана?
 Padu Merloti09 февр. 2010 г., 08:08
Отлично. Но для меня это работает только в том случае, если поверх XAML, который вы разместили здесь, я также установил WindowState = "Maximized"

Попробуй это

Width="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Width}"
Height="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Height}"

Я нашел это отличное решение

<Window WindowStyle="None" WindowStartupLocation="CenterScreen" WindowState="Maximized"
        MaxWidth="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Width}"
        MaxHeight="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Height}"
    >
...
</Window>

Но ошибка для меня все еще сохраняется, окна смещены на несколько пикселей сверху и слева ... Я пытался установить Left и Top на 0 после изменения состояния окна, но ничего не происходит.

True", и все, что мне нужно было сделать, это удалить его.

ВXaml установить следующую привязку наWindow.MaxHeight:

MaxHeight="{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenHeightKey}}"

Нет необходимости в дополнительном служебном классе.

 code-zoop02 сент. 2010 г., 21:51
Но что, если я хочу использовать свое приложение на втором мониторе?

Ваш ответ на вопрос