Преобразование WPF из единиц SystemParameter в независимые от устройства единицы - PullRequest
0 голосов
/ 23 мая 2018

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

Я не могу использовать свойство WindowState.Maximize в Xaml, потому что у меня есть связанный ящиккоторый генерирует кнопки на основе элементов в файле конфигурации.

Мой вопрос такой, поскольку SystemParameter.WorkArea.Height / Width дают мне измерения в пикселях, но высота в XAML ожидает измерения в устройстве DIU (DIP)-Независимые единицы.Есть ли способ конвертировать между двумя?

В тот момент, когда я устанавливаю размер окна равным разрешению system.parameter, он не покрывает всю рабочую область и оставляет небольшую полоску непокрытой, что, как я полагаю, является некоторой областью Windows 10, используемой для изменения размера или разрешенияПользователь выполняет другие функции, которые мне не нужны.

Спасибо за помощь.

1 Ответ

0 голосов
/ 23 мая 2018

Как насчет этого?

public double DipsToPixelsX(double input)
{
    return input * PresentationSource.FromVisual(Application.Current.Windows[0]).CompositionTarget.TransformToDevice.M11;
}

public double DipsToPixelsY(double input)
{
    return input * PresentationSource.FromVisual(Application.Current.Windows[0]).CompositionTarget.TransformToDevice.M22;
}

public double PixelsToDipsX(double input)
{
    return input / PresentationSource.FromVisual(Application.Current.Windows[0]).CompositionTarget.TransformToDevice.M11;
}

public double PixelsToDipsY(double input)
{
    return input / PresentationSource.FromVisual(Application.Current.Windows[0]).CompositionTarget.TransformToDevice.M22;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...