有没有办法在整个应用程序中定义一个常量字符串作为静态资源?
我正在运行Wpf应用程序,但没有主要的xaml表单。该应用程序是由单个经典.cs表单处理的xaml控件的集合。
答案 0 :(得分:74)
您可以将其定义为应用程序资源:
<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>
答案 1 :(得分:6)
只需添加资源字典XAML文件,假设它名为Dictionary.xaml
(Visual Studio可以自动创建一个)
然后,在此词典中添加静态资源。
要完成,请在所有XAML控件中引用字典:
<UserControl.Resources>
<ResourceDictionary Source="Dictionary.xaml"/>
</UserControl.Resources>
答案 2 :(得分:6)
上面的@FelicePollano对答案的补充 - 为了工作的代码缩进我把它作为一个单独的'答案'。
如果您碰巧在.cs文件中定义了原始常量,则可以避免在<x:Static x:Key="MyConstString" Member=local:Constants.MyString />
中重复其值:
xmlns:local=”clr-namespace:Utils”
要使上述“本地”参考工作,您需要在标记<Application>
中包含名称空间namespace Utils
{
public class Constants
{
public const string MyString = “My string”;
}
}
。
cs-class可能如下所示:
<TextBlock Text=”{StaticResource MyConstString}” />
xaml-code中的用法示例可以是:
js: true
答案 3 :(得分:4)
我采用了这种方法,尽管其他答案在大多数情况下都有效:
答案 4 :(得分:1)
您可以这样使用:
首先,采样常数变量:
namespace Constants
{
public class ControlNames
{
public const string WrapperGridName = "WrapperGrid";
}
}
第二个XAML使用:
<TextBlock Text="{x:Static Member=Constants:ControlNames.WrapperGridName}"