Отрегулируйте размер окна WPF на основе DPI

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

    public object GetIDForPassedInObject(T obj)
    {
        var prop = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance)
                   .FirstOrDefault(p => p.GetCustomAttributes(typeof(IdentifierAttribute), false).Count() ==1);
        object ret = prop !=null ?  prop.GetValue(obj, null) : null;

        return ret;
    }  
-1
задан Kiriz 5 March 2019 в 08:51
поделиться

3 ответа

Если вы хотите изменить размер окна вашего приложения, просто воспользуйтесь этой ссылкой: Размер окна WPF и этот wpf-windows-Overview # window-size

[110 ]

, но я думаю, что вы ищете интеграцию DPi в приложение WPF, посмотрите его ссылку для получения дополнительной информации

https://docs.microsoft.com/ru- / windows / рабочий стол / hidpi / объявление управляемых приложений-dpi -ware

tecniques-scaling-wpf-application

0
ответ дан Jophy job 5 March 2019 в 08:51
поделиться

Наконец-то я знаю, чего хочу. И описание в вопросе неясно: (

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

Поэтому я делаю свое окно Height и Width привязанным к

[ 110]

И добавьте это к самому внешнему Grid

        <Grid.LayoutTransform>
            <ScaleTransform CenterX="0" 
                            CenterY="0" 
                            ScaleX="{Binding ElementName=myMainWindow, Path=ScaleValue}" 
                            ScaleY="{Binding ElementName=myXMainWindow, Path=ScaleValue}"/>
        </Grid.LayoutTransform>

Коду

    public double ScaleValue
    {
        get
        {
            return ReSizeWidth / 1200;
            // 1200 is the design height
        }
    }

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

0
ответ дан Kiriz 5 March 2019 в 08:51
поделиться

То, что вы неправильно понимаете, - это подразделение, с которым вы работаете. при установке ширины контейнера вы не скажете ему, например, чтобы его ширина составляла ровно 500 пикселей. Это имеет смысл, когда вы начинаете думать о шрифтах. Fontsize 25 был бы хорош для вашего дисплея, но для дисплея 4K он мог бы быть минималистичным маленьким и нечитаемым. Чтобы обойти это стандартное устройство, для которого вы устанавливаете свой контейнер, составляет 1/96 дюйма. Вы можете изменить его, как показано ниже в цитате:

https://docs.microsoft.com/de-de/dotnet/api/system.windows.frameworkelement.width?view=netframework -4.7.2

qualDouble Двойное значение, как описано выше, за которым следует одна из следующих строк объявления единиц: px, in, cm, pt.

px (по умолчанию) - независимые от устройства единицы (1/96 дюйма на единицу)

в дюймах; 1 дюйм == 96px

см - это сантиметры; 1см == (96 / 2.54) px

pt - точки; 1pt == (96/72) px

Авто Включает режим автоматического изменения размера. См. Примечания.

0
ответ дан Denis Schaf 5 March 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: