我有一个应用程序,它在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是没有意义的。
答案 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);