以编程方式更改 ScrollViewer 中的滚动条宽度
Change ScrollBar width in ScrollViewer programatically
当我创建一个新的 ScrollViewer 时,我需要修改 ScrollViewer 中的 ScrollBars 的大小(更改 VerticalScroll 宽度和 HorizontalScroll 高度),以编程方式。
我根据在 SO 中找到的 solution 尝试了以下操作,但没有成功:
public static ScrollViewer CreateScrollViewer()
{
ScrollViewer result = new ScrollViewer();
// I need to set the scroll width and height here
// I tried the following with no success
result.Resources.Add(SystemParameters.VerticalScrollBarWidth, 100);
return result;
}
我看到了some solutions to change them,但都是XAML的。我 需要在运行时用纯 C# 完成它。我该怎么做?
您可以从 ScrollViewer
的 ControlTemplate
访问 ScrollBar
。您可以从 MSDN 上的 How to: Find ControlTemplate-Generated Elements page on MSDN and you can find details of the default ControlTemplate
in the ScrollViewer Styles and Templates 页面了解如何执行此操作,但简而言之,试试这个:
ScrollViewer scrollViewer = new ScrollViewer();
scrollViewer.ApplyTemplate();
ScrollBar scrollBar =
(ScrollBar)scrollViewer.Template.FindName("PART_VerticalScrollBar", scrollViewer);
您可以对名为 PART_HorizontalScrollBar
.
的水平 ScrollBar
执行相同的操作
当我创建一个新的 ScrollViewer 时,我需要修改 ScrollViewer 中的 ScrollBars 的大小(更改 VerticalScroll 宽度和 HorizontalScroll 高度),以编程方式。
我根据在 SO 中找到的 solution 尝试了以下操作,但没有成功:
public static ScrollViewer CreateScrollViewer()
{
ScrollViewer result = new ScrollViewer();
// I need to set the scroll width and height here
// I tried the following with no success
result.Resources.Add(SystemParameters.VerticalScrollBarWidth, 100);
return result;
}
我看到了some solutions to change them,但都是XAML的。我 需要在运行时用纯 C# 完成它。我该怎么做?
您可以从 ScrollViewer
的 ControlTemplate
访问 ScrollBar
。您可以从 MSDN 上的 How to: Find ControlTemplate-Generated Elements page on MSDN and you can find details of the default ControlTemplate
in the ScrollViewer Styles and Templates 页面了解如何执行此操作,但简而言之,试试这个:
ScrollViewer scrollViewer = new ScrollViewer();
scrollViewer.ApplyTemplate();
ScrollBar scrollBar =
(ScrollBar)scrollViewer.Template.FindName("PART_VerticalScrollBar", scrollViewer);
您可以对名为 PART_HorizontalScrollBar
.
ScrollBar
执行相同的操作