Окно WPF максимизировано ширина и высота - PullRequest
0 голосов
/ 03 июля 2018

TL; DR

Кажется, установка AllowTransparency на True смещает окно вверх и влево на 8 пикселей при максимизации, мне нужно вернуть его на экран.

Углубленный

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

У меня есть главное окно с настраиваемой строкой заголовка. Это означает, что я должен был установить WindowsStyle на None, и я также использовал шаблон. С самого начала у меня были проблемы с тем, что окно было намного больше, чем мой рабочий стол, хотя и было максимально развернуто. На ВСЕХ СТОРОНАХ было 8 пикселей от экрана. Я отказался от шаблона и попытался изменить существующее окно в соответствии со своими потребностями. Установив AllowTransparency обратно на false, мне удалось избавиться от утечки по бокам. Проблема, которая затем возникла, это граница в верхней части окна, которую я удалил, установив для CaptionHeight из WindowChrome значение 0.

Хорошо, утечка исчезла. Но я считаю, что моя текущая проблема связана с тем, что я написал выше. То есть я не могу привязать ширину и высоту к чему-либо, подходящего свойства нет. Это то, что я пробовал с SystemParameters:

SystemParameters.FullPrimaryScreenHeight;
SystemParameters.FullPrimaryScreenWidth;
SystemParameters.MaximizedPrimaryScreenHeight;
SystemParameters.MaximizedPrimaryScreenWidth;
SystemParameters.PrimaryScreenHeight;
SystemParameters.PrimaryScreenWidth;
SystemParameters.WorkArea.Height;
SystemParameters.WorkArea.Width;
SystemParameters.VirtualScreenWidth;

Требуемая фактическая высота (1048) находится где-то между SystemParameters.WorkArea.Height (1040) и SystemParameters.MaximizedPrimaryScreenHeight (1056).

А требуемая фактическая ширина (1928) находится где-то между SystemParameters.WorkArea.Width (1920) и SystemParameters.MaximizedPrimaryScreenWidth (1936).

Вы можете увидеть образец здесь.

  • MaximizedPrimaryScreenWidth и MaximizedPrimaryScreenHeight больше на 8 пикселей по сравнению с тем, что мне нужно
  • WorkArea.Width и WorkArea.Height меньше на 8 пикселей по сравнению с тем, что мне нужно
  • У меня была утечка со всех сторон до 8 пикселей

Это мой код окна

<Window x:Class="MyApp.MainWindow"
        ...
        WindowState="Normal" 
        ResizeMode="CanResizeWithGrip"
        MaxHeight="{Binding SystemParameters.WorkArea.Height}"
        WindowStyle="None">
    <WindowChrome.WindowChrome>
        <WindowChrome CaptionHeight="0"/>
    </WindowChrome.WindowChrome>
    ....content....
</Window>

Что также не работает:

- Window.Padding
- Window.Margin
- Window.Top
- WindowStyle="SingleBorderWindow"

Что я имею, но не хочу

XAML:
MaxWidth="{Binding MaximumWidth}"

C#
public double MaximumWidth
{
    get
    {
        // I don't want anything hard-coded.
        // Some other (correct) parameter would be fine as well,
        // if we can't get the window on screen.
        return SystemParameters.WorkArea.Width + 8;
    }
}

Обновление: SingleBorderWindow

Вот что происходит при использовании WindowStyle="SingleBorderWindow".

enter image description here

Итак, мое окно не только на 8 пикселей короче правого и нижнего краев (при привязке к WorkArea), но вы можете видеть фактическое окно сзади, а кнопки доступны для нажатия (даже там, где они не видны). Очень странно. Как будто есть два окна, но только то, что мне нужно, не в нужном месте.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

О. Если я угадаю, в вашем коде, который скрыт для нас, на определенном событии, чтобы максимизировать ваше окно, вы изменяете его ширину на SystemParameters.MaximizedPrimaryScreenWidth. Неправильно. Привязать к WindowState и изменить его на WindowState.Maximized.

0 голосов
/ 03 июля 2018

Требуемая фактическая высота (1048) находится где-то между SystemParameters.WorkArea.Height (1040) и SystemParameters.MaximizedPrimaryScreenHeight (1056).

И фактическая требуемая ширина (1928) находится где-то между SystemParameters.WorkArea.Width (1920) и SystemParameters.MaximizedPrimaryScreenWidth (1936).

Я думаю, вам нужно понять Windows Resolutions, чтобы помочь вам решить эту проблему, и

Я считаю, что 15-дюймовое окно имеет разрешение 1366 х 768, ширина х высота

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

...