将字符串定义为静态资源

时间:2011-04-14 09:30:39

标签: wpf xaml

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

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

5 个答案:

答案 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)

我采用了这种方法,尽管其他答案在大多数情况下都有效:

What does "{x:Static}" mean in XAML?

答案 4 :(得分:1)

您可以这样使用:

首先,采样常数变量:

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

第二个XAML使用:

<TextBlock Text="{x:Static Member=Constants:ControlNames.WrapperGridName}"