C# 如何在C中找到Scrollviewer的垂直滚动条宽度#

C# 如何在C中找到Scrollviewer的垂直滚动条宽度#,c#,wpf,xaml,scrollbar,scrollviewer,C#,Wpf,Xaml,Scrollbar,Scrollviewer,我有一个ScrollViewer,我正在显示垂直滚动条,现在在改变系统的分辨率时,我想得到滚动条的宽度。我通过他们提到的检查SystemParameters.ScrollWidth属性,但我还是从他们那里找到了任何帮助。谁能帮我解决我的问题。任何答案都将不胜感激。我想这正是您想要的。我不确定这是否是正确答案。每个WPF控件都可以重新设置样式,甚至滚动条也可以。因此,SystemParameters.VerticalScrollBarWidth仅在用作默认滚动条时有效。正确的解决方案是在可视化树中

我有一个ScrollViewer,我正在显示垂直滚动条,现在在改变系统的分辨率时,我想得到滚动条的宽度。我通过他们提到的检查SystemParameters.ScrollWidth属性,但我还是从他们那里找到了任何帮助。谁能帮我解决我的问题。任何答案都将不胜感激。

我想这正是您想要的。

我不确定这是否是正确答案。每个WPF控件都可以重新设置样式,甚至滚动条也可以。因此,SystemParameters.VerticalScrollBarWidth仅在用作默认滚动条时有效。正确的解决方案是在可视化树中找到垂直滚动条并测量其实际宽度。这是最精确的测量。

检查此代码,这将为您提供默认的滚动条宽度:double scrollBarwidth=SystemParameters.VerticalScrollBarWidth;顺便问一下为什么要找它,我想垂直滚动条宽度的默认值是17。@SharpUrBrain:是的,我检查过了,它给了我17个像素,但我在想它是否会根据DPI设置而改变,这就是为什么我要找它。如果你需要用XAML表示,您可以这样做:我得到了一个强制转换异常,因为该值是双精度的,但ColumnDefinition是GridLength。我使用的解决方案是:您将如何在XAML中执行此操作?@Grubsnik可能通过绑定到您将创建的属性。。。没有直接的东西会突然出现mind@Grubsnik如果您能提供XAML,我可以尝试编写它。这是一个定制的解决方案,因此很难给您及时的答案。@Patrik感谢您的提议,但XAML代码和项目早已从我的脑海中消失。我甚至记不起我要解决的问题了。就是这个。。。。如果可见性发生变化,我希望通过滚动条宽度偏移另一个uielement。为此,我创建了两个转换器,一个用遮罩(顶部、右侧等)将双精度转换为厚度,另一个用scrollviewer转换为厚度,并输入scrollbar宽度。