将XAML中的标签文本设置为字符串常量

时间:2011-07-22 18:11:33

标签: c# wpf xaml data-binding static-members

我有一个字符串常量,我必须在几个不同的XAML布局中重复使用,所以我不想复制它,而是将它绑定到一个常量。

我有一个在C#中定义字符串的类:

public static class StringConstants
{
     public static string MyString { get { return "SomeConstant"; } }
}

我希望能够通过以下内容通过XAML设置值:

<Label Content="{Binding local:StringConstants.MyString}"/>

这可以实现吗?我已经搜索了一些示例,但我只发现了代码隐藏中涉及一些修改的示例,我想知道是否有一个更简单的XAML解决方案,如果我知道我只需要设置一次基于值在一个永远不会改变的字符串值上。

3 个答案:

答案 0 :(得分:24)

您绑定到静态成员,因此您应该使用x:Static Markup Extension

<Label Content="{Binding Source={x:Static local:StringConstants.MyString}}"/>

根据@ H.B.的评论,没有必要使用Binding,因此使用起来更简单:

<Label Content="{x:Static local:StringConstants.MyString}"/>

答案 1 :(得分:0)

将公共静态字符串MyString放在App.xaml.cs中。然后你可以按如下方式引用它。

    Content="{Binding Source={x:Static Application.Current}, Path=MyString}" 

答案 2 :(得分:-1)

如果你在非静态类中有一个常量,这不起作用。

我的解决方案是绑定到视图模型(MVVM)中的常量。 它使用getter属性,包含更少的代码。

// view model
public const string MyString = "abc";
public string MyStringConst => MyString;

<!-- WPF -->    
<Label Content="{Binding MyStringConst, FallbackValue='abc'}" />

FallbackValue用于Designer预览。