0

我有一个将在所有表单中使用的字符串格式列表。

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

我在哪里存储这个 const 的?我想有不止一种方法可以做到这一点,但我希望它脱离我的形式,并且绑定语法必须尽可能短。

也许是这样的:

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

3 回答 3

1

我倾向于将它们存储为编译时常量:

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

和这样的参考:

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

为什么?

通过这种方式,我们可以在视图和视图模型中引用我们的常量,以便在整个应用程序中保持一致的格式。

于 2013-10-24T08:12:55.460 回答
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>
于 2013-10-24T08:04:18.617 回答
0

就个人而言,我只是将格式“存储”在实际中StringFormat(如您的第一个示例所示)。我不确定将它们全部存储在一个外部位置会带来什么好处,但是对于不知道所有格式的任何人(例如大多数人)来说,它会使您的代码的可读性稍差。

如果您坚持这样做,那么您可以将它们存储在该Resources部分中string

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

当然,您需要添加Systemxml 命名空间,即mscorlibdll。

然后您可以像访问它一样访问它StaticResource

Text="{Binding ADateTimeWithValue, StringFormat={StaticResource DateFormat}}"
于 2013-10-24T08:09:13.023 回答