是否有一种方法可以定义一个常量字符串,并在整个应用程序中作为静态资源使用?
我正在运行一个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的回答 - 为了使代码缩进生效,我将其作为一个单独的“答案”。
如果你恰好将原始常量定义在.cs文件中,那么可以通过以下方式避免在<Application.Resources>中重复定义它的值:
<x:Static x:Key="MyConstString" Member="local:Constants.MyString" />
要使上面的引用local
起作用,您需要在标签<Application>
中包含命名空间xmlns:local="clr-namespace:Utils"
。
cs-class可以如下所示:
namespace Utils
{
public class Constants
{
public const string MyString = "My string";
}
}
在xaml代码中使用的示例可以是:
<TextBlock Text="{StaticResource MyConstString}" />
无法将类型为“System.Windows.Markup.StaticExtension”的对象应用于期望类型为“System.String”的属性
。这个解决方案真的有效吗? - Daniel Möller只需添加一个资源字典 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}"
<x:Static Member="clr:String.Empty" />
来声明一个空字符串。 - Yogu