C# 在收听分辨率更改时,使用转换器自动调整半固定大小WPF窗口的大小
我目前正在WPF中创建一个类似于C# 在收听分辨率更改时,使用转换器自动调整半固定大小WPF窗口的大小,c#,wpf,resolution,C#,Wpf,Resolution,我目前正在WPF中创建一个类似于css媒体的/Android布局-like行为。基本上,我有基于屏幕宽度三个值的分辨率类别:800px、1280px和1920px 有三个对应的资源字典,其中包含带有UI元素键的Int32值。示例条目为: <sys:Int32 x:Key="initial_screen_width">1600</sys:Int32> 最后,我只需将UserControl属性与转换器绑定: <UserControl ... Height="{Bind
css媒体的/Android布局-like行为。基本上,我有基于屏幕宽度三个值的分辨率类别:800px、1280px和1920px
有三个对应的资源字典,其中包含带有UI元素键的Int32
值。示例条目为:
<sys:Int32 x:Key="initial_screen_width">1600</sys:Int32>
最后,我只需将UserControl
属性与转换器绑定:
<UserControl
...
Height="{Binding Converter={StaticResource LayoutDimensionConverter}, ConverterParameter=initial_screen_height}"
...
>
它工作得非常好——返回相应的维度。但是,我似乎找不到处理分辨率更改的方法(更新UI以再次调整)。我找到了一些关于UpdateTarget使用的链接
因此,我尝试使用系统参数作为静态变量,但没有检测到分辨率的变化。有没有办法做到这一点?这是使用
每当更改屏幕分辨率时,DataContext
将重置,并再次触发所有值转换器
<UserControl
...
Height="{Binding Converter={StaticResource LayoutDimensionConverter}, ConverterParameter=initial_screen_height}"
...
>
public SomeView()
{
SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
}
private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
{
// Refreshes UI
var dataContext = DataContext;
DataContext = null;
DataContext = dataContext;
}