我正在尝试覆盖WPF应用程序的垂直滚动条的宽度。将以下代码添加到App.xaml引用的资源字典中可以有效:
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">50</sys:Double>
但是,我需要从应用程序其他地方的代码隐藏位置访问该值,因此我想将此值设置为代码隐藏常量。
public static class MyConstants
{
public static double ScrollBarWidth = 50;
但是如何将此值设置为xaml中的double? 我尝试了所有这些方法都没有成功:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:constants="clr-namespace:MyProject">
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}" Binding="{x:Static constants:MyConstants.ScrollBarWidth}" />
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}" Source="{x:Static constants:MyConstants.ScrollBarWidth}" />
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}" Value="{x:Static constants:MyConstants.ScrollBarWidth}" />
答案 0 :(得分:1)
您可以将条目添加到资源中,然后从代码中将其取回。
var key = SystemParameters.VerticalScrollBarWidthKey;
Application.Current.Resources[key] = 42d;
Double vsbWidth = (Double)Application.Current.Resources[key];
Console.WriteLine(vsbWidth.ToString());
如果您想覆盖(例如)窗口范围内的值,则可以执行此操作。资源而不是应用程序。
答案 1 :(得分:0)
这似乎对我有用
<x:Static x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}" Member="local:Constants.scrollBarWidth" MemberType="{x:Type sys:Double}"></x:Static>