XAML изменить разрешение изменяет размер представления - PullRequest
0 голосов
/ 11 июня 2018

У меня есть вид с фиксированной высотой и шириной, и я в настоящее время использую монитор 4k.когда я запускаю свое приложение на мониторе 1080p, оно взрывается.У меня есть некоторые линии и пути, которые установлены с определенным полем, как и другие элементы управления.

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

    Height="{Binding Source={x:Static SystemParameters.PrimaryScreenHeight}, Converter={k1:RatioConverter}, ConverterParameter='0.7'}"
    Width="{Binding Source={x:Static SystemParameters.PrimaryScreenWidth}, Converter={k1:RatioConverter}, ConverterParameter='0.7'}"

. Вот конвертер, который я получил от @ berhauz

[ValueConversion(typeof(string), typeof(string))]
public class RatioConverter : MarkupExtension, IValueConverter
{
    private static RatioConverter _instance;

    public RatioConverter() { }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    { // do not let the culture default to local to prevent variable outcome re decimal syntax
        double size = System.Convert.ToDouble(value) * System.Convert.ToDouble(parameter, CultureInfo.InvariantCulture);
        return size.ToString("G0", CultureInfo.InvariantCulture);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    { // read only converter...
        throw new NotImplementedException();
    }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return _instance ?? (_instance = new RatioConverter());
    }

}

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

1 Ответ

0 голосов
/ 12 июня 2018

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

Height="{Binding Source={x:Static SystemParameters.PrimaryScreenHeight}, Converter={k1:RatioConverter}, ConverterParameter='0.7'}"
Width="{Binding Source={x:Static SystemParameters.PrimaryScreenWidth}, Converter={k1:RatioConverter}, ConverterParameter='0.7'}"

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...