我有一个应用程序,它在 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( future )。我的用户界面以独立于操作系统的方式封装。因此,使用 XAML 毫无意义。
最佳答案
最简单的方法是设置x:Name
属性,然后您就可以在代码中访问ScrollViewer
。
或使用绑定(bind):http://www.tutorialspoint.com/wpf/wpf_data_binding.htm
如果您想使用多个ScrollViewers
进行操作并设置相同的值,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:
我找到了解决办法。您可以添加 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);
关于c# - 以编程方式设置滚动条的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35273501/