XAML 更改分辨率更改视图的大小



我有一个高度和宽度固定的视图,我目前正在使用 4k 显示器。 当我在 1080p 显示器上运行我的应用程序时,它把事情搞砸了。 我有一些行和路径设置在一定的边距上,其他控件也是如此。

我尝试绑定到屏幕宽度和高度(见下文(,但是当更改为其他分辨率时,它没有保持屏幕尺寸固定。 我还将"调整大小模式"设置为"不调整大小">

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());
}
}

有没有办法固定每个分辨率的屏幕尺寸,这样线条、路径、控件就不会跳来跳去?

我发现简单的解决方案是将所有内容包装在视图中,并将视图框的高度和宽度绑定到主屏幕

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'}"

无论您的分辨率如何,我的 Viewbox 中的内容都保持不变,不会改变大小

最新更新