【发布时间】:2011-04-14 09:30:39
【问题描述】:
有没有办法定义一个常量字符串作为整个应用程序的静态资源?
我正在运行 Wpf 应用程序,但没有主 xaml 表单。该应用程序是由单个经典 .cs 表单处理的 xaml 控件的集合。
【问题讨论】:
有没有办法定义一个常量字符串作为整个应用程序的静态资源?
我正在运行 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>
【讨论】:
<x:Static Member="clr:String.Empty" />声明空字符串
对answer by @FelicePollano 的补充 - 为了让代码缩进起作用,我将其作为单独的“答案”。
如果您碰巧在 .cs 文件中定义了原始常量,则可以通过以下方式避免在 <Application.Resources> 中重复其值:
<x:Static x:Key="MyConstString" Member=local:Constants.MyString />
要使上面的引用“本地”起作用,您需要在标签<Application> 中包含命名空间xmlns:local=”clr-namespace:Utils”。
cs 类可能如下所示:
namespace Utils
{
public class Constants
{
public const string MyString = “My string”;
}
}
xaml 代码中的用法示例如下:
<TextBlock Text=”{StaticResource MyConstString}” />
【讨论】:
只需添加一个资源字典 XAML 文件,假设它的名称为 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}"
【讨论】: