Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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中繁重UI控件的平滑调整行为_C#_.net_Wpf - Fatal编程技术网

C# WPF中繁重UI控件的平滑调整行为

C# WPF中繁重UI控件的平滑调整行为,c#,.net,wpf,C#,.net,Wpf,我已经在WPF中开发了一个用于绘制图表的控件,但是当我调整控件的大小时会出现性能问题。因为我不知道如何使性能更好,所以在进行risize时,我只是简单地关闭了渲染,但这看起来不是很好。所以我的问题是,在调整大小时,是否可以将控件“冻结”为图像,使其看起来平滑 编辑:该控件基本上由包含自定义虚拟化面板的scrollviewer组成。scrollviewer只能水平滚动。scrollviewer中的虚拟化面板包含所有其他项目,如曲线、标签、网格等。以下是一个很好的建议列表: 此外,请尝试: Scr

我已经在WPF中开发了一个用于绘制图表的控件,但是当我调整控件的大小时会出现性能问题。因为我不知道如何使性能更好,所以在进行risize时,我只是简单地关闭了渲染,但这看起来不是很好。所以我的问题是,在调整大小时,是否可以将控件“冻结”为图像,使其看起来平滑


编辑:该控件基本上由包含自定义虚拟化面板的scrollviewer组成。scrollviewer只能水平滚动。scrollviewer中的虚拟化面板包含所有其他项目,如曲线、标签、网格等。

以下是一个很好的建议列表:

此外,请尝试:

ScrollViewer上的IsDeferredScrollingEnabled=“true”

只有当您有ScrollViewer.CanContentScroll=true时,才会启用UI虚拟化

允许基于像素的滚动和虚拟化的黑客解决方案:

有关UI虚拟化的一些详细信息:


这个答案显然太晚了,但可能对未来的探险家有所帮助

如果您希望在繁忙控件上平滑地重新调整内容大小,此答案可能不适用。但是如果你想在重新调整尺寸的过程中解决口吃的问题,那么在重新调整尺寸之前就要这样做

  • 图像中的屏幕内容
  • 以上面的图像为背景,放置重角覆盖
  • 将控件的可见性设置为隐藏/折叠
  • 当重新调整尺寸完成时

  • 将控件的可见性设置为“可见”
  • 等待布局发生更改(即控件已布局)
  • 现在隐藏矩形覆盖

  • 这对于控件来说相当有效,但如果调整窗口大小,仍然会导致口吃。

    如何调整控件大小?我将它放在窗口中,并在调整窗口大小时调整它的大小。您尝试过吗?在这里,对控件进行精确调整会很有帮助。也许吧?或者它至少包含什么类型的UI元素。为什么不在开始调整大小时将重UI控件的高度和宽度属性设置为固定值-ActualHeight和ActualWidth,然后在完成调整大小时删除高度和宽度?@Liero ActualHeight和ActualWidth是只读属性。问题是,由于控件中元素的数量,对Measure()和Arrange()的调用非常昂贵。这会导致性能差和口吃问题。我的建议是延迟控件的重新排列,直到完成调整大小是的,实际高度是只读的,这就是我建议只读的原因;)<代码>延迟控件的重新安排-这正是我的建议。如果在调整窗口大小时明确地将大小设置为固定值,则在调整窗口大小时不会调用“测量”和“阵列”。删除显式大小时,将重新排列子项。