2011-07-22 56 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預覽。

相關問題