wpf 如何在代码隐藏中将XAML资源值设置为常量

u59ebvdq  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(127)

我试图覆盖WPF应用程序的垂直滚动条的宽度。将以下代码添加到App引用的资源字典中。xaml works a treat:

<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}" />
ykejflvf

ykejflvf1#

这似乎对我有用

<x:Static x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}" Member="local:Constants.scrollBarWidth" MemberType="{x:Type sys:Double}"></x:Static>

x:Static Markup Extension

ztigrdn8

ztigrdn82#

您可以将该条目添加到资源中,然后在代码中从那里获取它。

var key = SystemParameters.VerticalScrollBarWidthKey;
        Application.Current.Resources[key] = 42d;
        Double vsbWidth = (Double)Application.Current.Resources[key];
        Console.WriteLine(vsbWidth.ToString());

如果你想覆盖(比如说)窗口范围的值,你可以这样做。资源,而不是应用。

j9per5c4

j9per5c43#

使用x:Static标记扩展而不使用MemberType对我来说很有效:

<x:Static x:Key="myKey" Member="local:MyConstants.ScrollBarWidth"></x:Static>

相关问题