有没有办法定义一个常量字符串作为整个应用程序的静态资源?
我正在运行 Wpf 应用程序,但没有主 xaml 表单。该应用程序是由单个经典 .cs 表单处理的 xaml 控件的集合。
您可以将其定义为应用程序资源:
<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>
对 @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}" />
Dictionary.xaml
(Visual Studio 可以自动为您创建一个)。然后,将您的静态资源添加到这个字典中。
最后,在所有 XAML 控件中引用字典:
<UserControl.Resources>
<ResourceDictionary Source="Dictionary.xaml"/>
</UserControl.Resources>
首先,样本常变量:
namespace Constants
{
public class ControlNames
{
public const string WrapperGridName = "WrapperGrid";
}
}
第二个 XAML 使用:
<TextBlock Text="{x:Static Member=Constants:ControlNames.WrapperGridName}"