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

标签 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( 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/

相关文章:

c# - 同时用户在数据绑定(bind) DataGridView 中进行更改时出现问题

c# - 一般将 IQueryable 转换为 IOrderedQueryable

wpf - app.xaml.cs 中的依赖属性

c# - 为什么 IPAddress 构造函数采用 Int64 而不是 UInt32?

c# - TCP Socket中SocketError.ConnectionReset的可能原因有哪些

c# - 为什么我不能对结构使用 as 关键字?

wpf - 如何防止组合框从 wpf 的列表中选择项目?

c# - 以编程方式将属性绑定(bind)到 GridViewColumn.Width

wpf - 如何防止选项卡导航到控件,同时允许定向导航到该控件

wpf - WPF中通过Uid获取对象