微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ScrollViewer.MeasureOverride设置ComputerScrollbarVisibility为Collapsed,然后将其设置为正确的值

如何解决ScrollViewer.MeasureOverride设置ComputerScrollbarVisibility为Collapsed,然后将其设置为正确的值

如果将VerticalScrollbarVisibility中的Scrollviewer设置为“自动”,则该MeasureOverride的{​​{1}}方法首先将ScrollViewer设置为“折叠”。只有这样,它才能计算正确的值,并在必要时再次更改它。水平滚动条的行为相同。

您可以在这里看到此:https://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/windows/Controls/ScrollViewer.cs,1202

我们绑定到ComputedVerticalScrollbarVisibility属性,触发一些边距更改。这将触发ComputedVerticalScrollbarVisibility,从而导致循环。我们还有其他解决方法可以解决此问题,但是我想知道为什么要用这种方式进行编码。

为什么在设置正确的计算值之前先将其设置为“折叠”?

解决方法

对此没有确切答案。只有代码的作者才知道为什么要这样做。
您对性能影响的观察是Microsoft建议禁用ScrollBar或显式启用它的原因。建议始终避免将滚动条的可见性设置为Auto

优化性能:其他建议:Avoid Using ScrollBarVisibility=Auto

“ Auto值用于空间有限且仅在必要时才显示滚动条的情况。例如,将此ScrollBarVisibility值与30个项目的ListBox而不是与数百个TextBox一起使用可能是有用的文本行。”

这还将回答您的问题:ScrollViewer必须测量“纯”内容,以检查是否应避免使用滚动条。为此,需要进行一次完整的额外测量,而无需将滚动条添加到内容中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。