将字符串定义为静态资源

Mar*_*com 25 wpf xaml

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

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

Fel*_*ano 77

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

 <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>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您可以使用[`<x:Static Member ="clr:String.Empty"/>`](http://stackoverflow.com/questions/7203996/how-to-declare-an-empty-string-in -xaml-resourcedictionary)声明一个空字符串 (4认同)

Hen*_*rik 8

上面的@FelicePollano对答案的补充 - 为了工作的代码缩进我把它作为一个单独的'答案'.

如果您碰巧在.cs文件中定义了原始常量,则可以避免重复其值<Application.Resources>:

<x:Static x:Key="MyConstString" Member=local:Constants.MyString />
Run Code Online (Sandbox Code Playgroud)

要使上面的"本地"参考起作用,您需要xmlns:local=”clr-namespace:Utils”在标记中包含命名空间 <Application>.

然后cs-class看起来像这样:

namespace Utils 
{
    public class Constants
    {
        public const string MyString = “My string”;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在xaml代码中使用的示例可以是:

<TextBlock Text=”{StaticResource MyConstString}” />
Run Code Online (Sandbox Code Playgroud)


Dam*_*cus 6

只需添加一个资源字典XAML文件,假设它已命名Dictionary.xaml(Visual Studio可以自动创建一个)

然后,在此字典中添加静态资源.

要完成,请在所有XAML控件中引用字典:

<UserControl.Resources>
                <ResourceDictionary Source="Dictionary.xaml"/>
    </UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)


baf*_*sar 5

你可以这样使用:

首先,样本常量变量:

namespace Constants
{
    public class ControlNames
    {
        public const string WrapperGridName = "WrapperGrid";
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个 XAML 使用:

<TextBlock Text="{x:Static Member=Constants:ControlNames.WrapperGridName}"
Run Code Online (Sandbox Code Playgroud)