我有一个将在所有表单中使用的字符串格式列表。
Text="{Binding ADateTimeWithValue, StringFormat=dd-MM-yyyy}"
我在哪里存储这个 const 的?我想有不止一种方法可以做到这一点,但我希望它脱离我的形式,并且绑定语法必须尽可能短。
也许是这样的:
Text="{Binding ADateTimeWithValue, StringFormat=local:Config.DateFormat}"
我有一个将在所有表单中使用的字符串格式列表。
Text="{Binding ADateTimeWithValue, StringFormat=dd-MM-yyyy}"
我在哪里存储这个 const 的?我想有不止一种方法可以做到这一点,但我希望它脱离我的形式,并且绑定语法必须尽可能短。
也许是这样的:
Text="{Binding ADateTimeWithValue, StringFormat=local:Config.DateFormat}"
我倾向于将它们存储为编译时常量:
public static class FormatConstants
{
public const string FORMATTER = "DD MM YYYY";
}
和这样的参考:
{Binding Date, StringFormat={x:Static ns:FormatConstants.FORMATTER}}
为什么?
通过这种方式,我们可以在视图和视图模型中引用我们的常量,以便在整个应用程序中保持一致的格式。
您可以将所有格式存储在资源字典中:
<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>
就个人而言,我只是将格式“存储”在实际中StringFormat
(如您的第一个示例所示)。我不确定将它们全部存储在一个外部位置会带来什么好处,但是对于不知道所有格式的任何人(例如大多数人)来说,它会使您的代码的可读性稍差。
如果您坚持这样做,那么您可以将它们存储在该Resources
部分中string
:
<System:String x:Key="DateFormat">d MMMM yyyy</System:String>
当然,您需要添加System
xml 命名空间,即mscorlib
dll。
然后您可以像访问它一样访问它StaticResource
:
Text="{Binding ADateTimeWithValue, StringFormat={StaticResource DateFormat}}"