定义字符串为静态资源

问题描述 投票:0回答:4

有没有办法定义一个常量字符串作为整个应用程序的静态资源?

我正在运行 Wpf 应用程序,但没有主 xaml 表单。该应用程序是由单个经典 .cs 表单处理的 xaml 控件的集合。

wpf xaml
4个回答
90
投票

您可以将其定义为应用程序资源:

 <Application x:Class="xxxxxx"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:clr="clr-namespace:System;assembly=mscorlib"
                 StartupUri="MainWindow.xaml">
        <Application.Resources>
            <clr:String x:Key="MyConstString">My string</clr:String>
        </Application.Resources>
    </Application>

15
投票

对 @FelicePollano 的 answer 的补充 - 为了使代码缩进起作用,我将其作为单独的“答案”。

如果您碰巧在 .cs 文件中定义了原始常量,您可以通过以下方式避免在

<Application.Resources>

 中重复其值:

<x:Static x:Key="MyConstString" Member="local:Constants.MyString" />
要使上面的参考

local

正常工作,您需要在标签
xmlns:local="clr-namespace:Utils"
中包含命名空间
<Application>

cs 类可能如下所示:

namespace Utils { public class Constants { public const string MyString = "My string"; } }
xaml 代码中的用法示例可以是:

<TextBlock Text="{StaticResource MyConstString}" />
    

7
投票
只需添加一个资源字典 XAML 文件,假设它的名称为

Dictionary.xaml

(Visual Studio 可以自动为您创建一个)。

然后,将您的静态资源添加到这个字典中。

最后,在所有 XAML 控件中引用字典:

<UserControl.Resources> <ResourceDictionary Source="Dictionary.xaml"/> </UserControl.Resources>
    

5
投票
你可以这样使用:

首先,样本常变量:

namespace Constants { public class ControlNames { public const string WrapperGridName = "WrapperGrid"; } }

第二个 XAML 使用:

<TextBlock Text="{x:Static Member=Constants:ControlNames.WrapperGridName}"
    
© www.soinside.com 2019 - 2024. All rights reserved.