Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在收听分辨率更改时,使用转换器自动调整半固定大小WPF窗口的大小_C#_Wpf_Resolution - Fatal编程技术网

C# 在收听分辨率更改时,使用转换器自动调整半固定大小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

我目前正在WPF中创建一个类似于
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;
        }