如何解决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 举报,一经查实,本站将立刻删除。