C# WPF在调整窗口大小时同时更改属性

C# WPF在调整窗口大小时同时更改属性,c#,wpf,forms,properties,window-resize,C#,Wpf,Forms,Properties,Window Resize,我有WPF无边框窗口(WindowStyle==None)和以下手动表单最大化/恢复代码: var currentScreen=this.currentScreen(); if(windowState==System.Windows.windowState.Normal) { WindowsState=System.Windows.WindowsState.Maximized; 左=左; 顶部=顶部; 宽度=宽度; 高度=高度; 左=currentScreen.WorkingArea.Left;

我有WPF无边框窗口(
WindowStyle==None
)和以下手动表单最大化/恢复代码:

var currentScreen=this.currentScreen();
if(windowState==System.Windows.windowState.Normal)
{
WindowsState=System.Windows.WindowsState.Maximized;
左=左;
顶部=顶部;
宽度=宽度;
高度=高度;
左=currentScreen.WorkingArea.Left;
Top=currentScreen.WorkingArea.Top;
宽度=currentScreen.WorkingArea.Width;
高度=currentScreen.WorkingArea.Height;
}
其他的
{
windowState=System.Windows.windowState.Normal;
左=左;
顶部=顶部;
宽度=宽度;
高度=高度;
}

但尺寸更改分为几个步骤:左位置更改、顶部位置更改、宽度更改和高度更改。如何同时更改所有这些属性?

最后使用updatelayout()可能会有所帮助。您可以创建一个包装器属性,因为没有这样的直接方法,这将有助于减少重复几次的行数。有关示例,请参见“大小更改分几个步骤执行”。你真的能从视觉上感觉到你的窗口一步一步地更新这些属性吗?+1。我现在遇到了这个问题。我正在将窗口从没有边框更改为有边框(从ResizeMode==NoResize更改为ResizeMode=CanResize)。这会导致渲染的宽度和高度减小,因此我通过调整“左”、“右”、“宽度”和“高度”属性来进行补偿,以在添加调整大小的边框时保留渲染的窗口大小。这会导致窗口在更改大小调整模式后重新绘制时闪烁,然后在调整位置和大小后再次闪烁。如果能知道是否可以推迟调整大小或渲染,那就太好了。