同时更新窗口大小和网格边距

时间:2018-10-10 08:42:36

标签: c# wpf

我有一个自定义样式的wpf窗口(无边界)。我在自定义窗口动画方面遇到麻烦,问题归结为设置窗口大小和网格边距(窗口上所有控件的父级)时,它们总是单独更新,要么网格先更改其边距,然后窗口将改变其大小,反之亦然(导致非常明显的闪烁)。有什么方法可以停止窗口绘制,直到网格完全更新完毕?还是强迫他们同时更新?

这里是动画后代码(到目前为止,所有内容都是无缝的),但我认为这不会很有帮助。

GridBackground.Margin = new Thickness(0, 0, 0, 0);
this.Width = NormalWindowSize.Width;
this.Height = NormalWindowSize.Height;
this.Top = NormalWindowSize.Top;
this.Left = NormalWindowSize.Left;

此代码的作用是在具有全屏透明窗口和GridBackground上的“假”窗口通过边距偏移到具有与网格相同的大小和位置以及没有边距的网格之间切换。如前所述,此代码可以正常工作,但是问题在于网格和窗口无法同时更新。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用调度程序更改窗口大小?

GridBackground.Margin = new Thickness(0, 0, 0, 0);
Dispatcher.BeginInvoke(new Action(() => 
{
    this.Width = NormalWindowSize.Width;
    this.Height = NormalWindowSize.Height;
    this.Top = NormalWindowSize.Top;
    this.Left = NormalWindowSize.Left;
}), DispatcherPriority.ApplicationIdle);