2011-07-22 66 views
9

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

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

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

我希望能够通过一些通过XAML设置的值如下所示:

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

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

回答

19

您绑定到一个静态成员,所以你应该使用x:Static Markup Extension

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

据@ HB的评论是没有必要使用绑定,所以它更简单的使用方法:

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

为什么一个会用的结合呢?我当然不会... –

+0

@ H.B。你推荐什么? – mtlynch

+3

@ nonsensical101:只留下它:'Content =“{x:Static local:StringConstants.MyString}”' –

0

将公共静态字符串MyString放入App.xaml.cs.然后你可以参考它如下。

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

在你有一个非静态类的常量内的情况下,这是行不通的。

我的解决方案绑定到视图模型(MVVM)中的常量。 它使用getter属性和较少的代码进行换行。

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

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

FallbackValue用于Designer预览。

相关问题