2013-10-24 106 views
0

我有字符串格式,我會在我的所有形式使用列表的StringFormat的地方。什麼是存儲綁定

Text="{Binding ADateTimeWithValue, StringFormat=dd-MM-yyyy}" 

我在哪裏存儲這個const的?我想不止一種方法去做一件事,但我想出來的我的形式和綁定語法必須儘可能短。

也許是這樣的:

Text="{Binding ADateTimeWithValue, StringFormat=local:Config.DateFormat}" 

回答

1

你可能所有的格式存儲在一個資源字典:

<Window ... xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <Window.Resources> 
     <sys:String x:Key="DateFormat">dd-MM-yyyy</sys:String> 
    </Window.Resources> 
    ... 
    <TextBlock Text="{Binding ADateTime, StringFormat={StaticResource DateFormat}}"/> 
    ... 
</Window> 
+0

謝謝我要使用這一個,因爲綁定語法很短。但我也將不得不用const代碼類。請參閱@Gusdor的回答 –

0

就個人而言,我只是「店」在實際StringFormat格式(如你的第一個例子)。我不確定將它們全部存儲在一個外部位置可能會帶來哪些好處,但它會使不懂所有格式的人(例如,大多數人)對代碼的可讀性略低。

如果你堅持這樣做,那麼你可以將它們在Resources部分存儲爲string

<System:String x:Key="DateFormat">d MMMM yyyy</System:String> 

當然,你需要添加System XML命名空間這是mscorlib DLL。

然後,您可以訪問它像任何StaticResource

Text="{Binding ADateTimeWithValue, StringFormat={StaticResource DateFormat}}" 
1

我傾向於並將其作爲編譯時間常數:

public static class FormatConstants 
{ 
    public const string FORMATTER = "DD MM YYYY"; 
} 

和參考這樣的:

{Binding Date, StringFormat={x:Static ns:FormatConstants.FORMATTER}} 

爲什麼?

這種方式,我們可以引用我們的看法和跨應用一致的格式視圖模型我們兩個常量。