2016-02-08 73 views
2

我有一个应用程序,它使用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

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

或使用绑定:如果你想与multile ScrollViewers并设置相同的值来操纵http://www.tutorialspoint.com/wpf/wpf_data_binding.htm

Binding将是有益的。

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

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

编辑2: 你可以尝试:

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

      scrollViewer.Style = myStyle; 

编辑3: 我找到了解决办法。你的答案

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

感谢:您可以添加ResourceDictionary.xaml而这种风格添加到它:

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

然后在运行时加载它,如下所示。不幸的是,我需要一种没有任何XAML的方式。 – Martin

+0

你能否澄清一下你的意思是“没有任何XAML”?我的方法是编程式的,你只需要一种方法来告诉哪个scrollViewer改变。 – Filip

+0

链接的网站显示基于XAML示例的数据绑定教程。我需要纯C#或VB.NET代码,如_new ScrollViewer()。ScrollBarWith = 42_或_SystemParameters.ScrollBarWith = 42_。这两个例子当然都不起作用。但我希望他们澄清我正在寻找的东西。 – Martin

相关问题