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



我有一个自定义样式的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 上的"假"窗口通过边距偏移(与窗口的大小和位置与网格相同且网格没有边距之间过渡。如前所述,此代码工作正常,但问题是网格和窗口没有同时更新。

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

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

最新更新