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

C# 以编程方式设置滚动条的宽度,c#,wpf,C#,Wpf,我有一个应用程序,它使用windows上的WPF作为工具包框架。现在,我想以编程方式设置ScrollViewer的滚动条宽度。我找到了许多通过XAML设置宽度的示例。但是,如何以编程方式定义滚动条的宽度 不幸的是,我在ScrollViewer上找不到任何属性或方法来设置滚动条的宽度 var viewer = new ScrollViewer(); viewer.MagicProperty = 42; // Does not exist 不幸的是,SystemParameters上的所有属性都是

我有一个应用程序,它使用windows上的WPF作为工具包框架。现在,我想以编程方式设置ScrollViewer的滚动条宽度。我找到了许多通过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毫无意义。

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

或使用绑定:

如果要使用multile
ScrollViewer进行操作并设置相同的值,则绑定将非常有用

编辑: 您可以在代码中创建ScrollViewer,然后设置其参数。但您需要一种方法将其插入VisualTree和其他控件中。所以您需要获取某个容器的实例,然后使用它的
子类.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>

谢谢你的回答。不幸的是,我需要一种没有任何XAML的方法。你能澄清一下“没有任何XAML”是什么意思吗?我的方法是编程的,您只需要知道要更改哪个scrollViewer。链接的网站显示了一个基于XAML示例的数据绑定教程。我需要纯C#或VB.NET代码,如new ScrollViewer().ScrollBarWith=42或SystemParameters.ScrollBarWith=42。当然,这两个例子都不起作用。但我希望他们能澄清我的想法。这当然是可能的,只是不必要的复杂。如果您不想设置x:Name,那么您必须使用VisualTree找到您的ScrolViewer-我有所有ScrollViewer实例。这不是问题所在。但是我找不到任何属性或方法来设置滚动条宽度。不幸的是,在SystemParameters中,所有属性都是只读的。如果我知道在没有任何XAML文件的情况下使用x:Name的方法,我对它没有任何异议。
Resources.MergedDictionaries.Add(Application.LoadComponent(new Uri(@"Dictionary.xaml", UriKind.Relative)) as
                ResourceDictionary);