我如何或可以为 TextBlock 上的 StringFormat 使用静态资源?
How do I, or can I use a static resource for the StringFormat on a TextBlock?
我有一个显示 date/time 的文本块。时钟的外观在应用程序中的某些控件上可能有所不同,就颜色和字体而言,但我希望日期和时间具有相同的格式。
我知道我可以像这样设置 StringFormat 属性:
<TextBlock Text="{Binding CurrentDateTime, StringFormat='{}{0:h\:mm tt}'}" Foreground="White" FontFamily="Proxima Nova Rg" FontSize="20" />
但是,我不知道如何将字符串格式提取到单独的字符串资源字典中。我尝试执行如下操作,但日期时间字符串根本没有出现。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<system:String x:Key="MyFormat">{}{0:h\:mm tt}</system:String>
</ResourceDictionary>
<!-- In another file -->
<TextBlock Text="{Binding CurrentDateTime, StringFormat={StaticResource MyFormat}}" Foreground="White" FontFamily="Proxima Nova Rg" FontSize="20" />
这完全可以做到吗?如果可以,怎么做?
谢谢
看来您只需要删除 {}
:
<system:String x:Key="MyFormat">{0:h\:mm tt}</system:String>
属性值需要 {}
以防止它们被解释为标记扩展。但是,使用 属性 元素语法,您不再需要 {}
,因为大括号在该上下文中没有特殊含义。
我有一个显示 date/time 的文本块。时钟的外观在应用程序中的某些控件上可能有所不同,就颜色和字体而言,但我希望日期和时间具有相同的格式。
我知道我可以像这样设置 StringFormat 属性:
<TextBlock Text="{Binding CurrentDateTime, StringFormat='{}{0:h\:mm tt}'}" Foreground="White" FontFamily="Proxima Nova Rg" FontSize="20" />
但是,我不知道如何将字符串格式提取到单独的字符串资源字典中。我尝试执行如下操作,但日期时间字符串根本没有出现。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<system:String x:Key="MyFormat">{}{0:h\:mm tt}</system:String>
</ResourceDictionary>
<!-- In another file -->
<TextBlock Text="{Binding CurrentDateTime, StringFormat={StaticResource MyFormat}}" Foreground="White" FontFamily="Proxima Nova Rg" FontSize="20" />
这完全可以做到吗?如果可以,怎么做?
谢谢
看来您只需要删除 {}
:
<system:String x:Key="MyFormat">{0:h\:mm tt}</system:String>
属性值需要 {}
以防止它们被解释为标记扩展。但是,使用 属性 元素语法,您不再需要 {}
,因为大括号在该上下文中没有特殊含义。