以编程方式设置滚动条的宽度

时间:2016-02-08 15:42:41

标签: c# wpf

我有一个应用程序,它在Windows上使用WPF作为工具包框架。现在我想以编程方式为ScrollViewers设置滚动条的宽度。我找到了很多通过XAML设置宽度的例子。但是如何以编程方式定义滚动条的宽度?

不幸的是我在ScrollViewer上找不到任何属性或方法来设置滚动条的宽度。

var viewer = new ScrollViewer();
viewer.MagicProperty = 42; // Does not exist

同样,SystemParameters上的所有属性都是只读的。

VerticalScrollBarWidth.VerticalScrollBarWidth = 42; // Read-only

编辑:WPF只是我的应用程序中的多个工具包框架之一。我使用自定义GUI抽象层来支持Windows(WPF),Linux(GTK#)和MacOS X(将来)。我的用户界面以独立于操作系统的方式封装。因此,使用XAML是没有意义的。

1 个答案:

答案 0 :(得分:1)

最简单的方法是设置x:Name属性,然后您可以在代码中访问ScrollViewer

或使用Binding:http://www.tutorialspoint.com/wpf/wpf_data_binding.htm

如果您想要使用多个Binding进行操作并设置相同的值,

ScrollViewers将非常有用。

编辑: 您可以在代码中创建ScrollViewer,然后设置其参数。但是你需要一种方法将它插入VisualTree和其他控件之中。因此,您需要获取某个容器的实例,然后使用其Children.Add()方法

但是我真的建议尽可能多地使用XAML并保留应用程序逻辑的代码,而不是UI构建。

编辑2: 你能尝试一下:

            Style myStyle = new Style(typeof(ScrollBar));
            myStyle.Setters.Add(new Setter(WidthProperty, 40));

            scrollViewer.Style = myStyle;

编辑3: 我找到了解决方案。您可以添加ResourceDictionary.xaml并将此样式添加到其中:

 <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
        <Setter Property="MinWidth" Value="35" />
        <Setter Property="Width" Value="35" />
    </Style>

然后在运行时加载它,如下所示:

Resources.MergedDictionaries.Add(Application.LoadComponent(new Uri(@"Dictionary.xaml", UriKind.Relative)) as
                ResourceDictionary);