【问题标题】:Change ScrollBar width in ScrollViewer programatically以编程方式更改 ScrollViewer 中的 ScrollBar 宽度
【发布时间】:2015-07-31 06:15:05
【问题描述】:

当我创建一个新的 ScrollViewer 时,我需要修改 ScrollViewer 中 ScrollBars 的大小(更改 VerticalScroll 宽度和 Horizo​​ntalScroll 高度),以编程方式

我根据在 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 解决方案to 更改them,但都是基于XAML。我需要在运行时使用纯 C# 来完成。我怎么能这样做?

【问题讨论】:

  • 您是否考虑过改用Style
  • @MikeEason:是的,我考虑过,但我的要求是纯 C#,没有 XAML。
  • 这个要求从何而来?
  • @DanielHilgarth:来自我的公司。我们试图避免使用 XAML,因为在我们的团队中,我们使用了支持 C# 但不支持 XAML 的语义合并工具。
  • @DanielPeñalba:至少可以这么说,这是一个非常奇怪的决定。

标签: c# .net wpf scrollviewer


【解决方案1】:

您可以从ScrollViewerControlTemplate 访问ScrollBar。您可以从 MSDN 上的 How to: Find ControlTemplate-Generated Elements 页面了解如何执行此操作,您可以在 MSDN 上的 ScrollViewer Styles and Templates 页面中找到默认 ControlTemplate 的详细信息,但简而言之,试试这个:

ScrollViewer scrollViewer = new ScrollViewer();
scrollViewer.ApplyTemplate();
ScrollBar scrollBar = 
    (ScrollBar)scrollViewer.Template.FindName("PART_VerticalScrollBar", scrollViewer);

您可以对名为PART_HorizontalScrollBar 的水平ScrollBar 执行相同操作。

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    相关资源
    最近更新 更多