在窗口WPF布局(WPF layout on a Window)

2019-07-17 15:03发布

我有一对夫妇在WPF的Windows列表框,具有Height="Auto" Width="Auto"的形式设置

形式完美尺寸上不同的分辨率,但问题是,当我按下最大化按钮厚厚的“黑L”是可见的,而形式调整大小。 我已经看到了这对相当多的WPF应用程序,但没有解决问题到现在。

有没有一种方法,以双缓冲的窗口,或者叫WPF中SuspendLayout(),而表单上的控件调整? 我怎样才能摆脱这种丑陋的黑色升?

Answer 1:

引用最近的一个Hanselminutes :

伊恩·格里菲思:...有win32的提示这是一个普通的Win32消息循环,和WPF池掉的消息,并将它们放在它自己的提示,然后处理它在它自己的甜蜜时光,部分原因是希望能够重新排序的事件,因为他们进来,为什么你略显奇怪的重绘处理上调整WPF应用程序将某些事情的优先次序输入处理上面,比如,这,顺便说一句,是,你可能已经注意到你得到一点点的空白位出现暂时当你调整窗口大小,那是因为它承认resize事件,它实际上确实有这事之前,然后用油漆什么的,通常存在不同步的小幅发生。 因此,有一个Win32消息队列,但它实际上并没有WPF的主要消息队列,这一切类型的实现细节的调度员试图掩盖尽可能多的关于它越好。

看来有关您的问题,虽然我不知道一个完整的解决方案。 也许,你应该尝试改变一些调度优先级?



Answer 2:

跳马,我觉得这可能有事情做与列表框执行UI虚拟化。 虚拟化允许列表框仅加载正被渲染的那些UI元素。 列表框不与VirtualizingStackPanel的帮助,因为它的ItemsPanelTemplate。

所以我的想法似乎是...是最大化窗口会推列表框,以产生更多的UI元素和延迟会casued黑“L”。

您可以删除虚拟化和检查它的黑色“L”是否仍然出现。 顺便说,虚拟化实际上是一个“好”的事情,并关闭它是一般一个坏主意。



文章来源: WPF layout on a Window