我对所有Silverlight都很陌生,只是通过示例学习并查看代码,很抱歉,如果这是一个愚蠢的问题。 我有这种风格用于在XAML中显示时间:
<Style x:Key="MyTimeMaskStyle" TargetType="controls:MyMaskedTextBox" BasedOn="{StaticResource MyMaskedTextBoxStyle}">
<Setter Property="MaskType" Value="Standard" />
<Setter Property="Mask" Value="##:## ll"></Setter>
<Setter Property="Placeholder" Value=" " />
</Style>
它以 05:34 PM
等格式显示时间
问题是,如果从数据库加载的数据(一些旧数据)最初以 5:34 PM 的格式保存,那么它将以这种方式显示,注意它缺少 5 之前>“0”?
所以我需要修改这个掩码,使其始终显示为“0”。
答案 0 :(得分:1)
尝试使用以下StringFormat
代替(假设MaskedTextBox
正在使用StringFormat
):
<Setter Property="Mask" Value="00:00 ll" />
#
字符是'任意字符'占位符,而0
字符应该显示0
如果该空格中没有其他值。您可以在MSDN上的Custom Date and Time Format Strings页面上找到更多信息。
但是,如果来自数据库的值为string
,则无法应用StringFormat
。
更新&gt;&gt;&gt;
我刚刚意识到我链接到MSDN上的错误页面为零占位符...您可以在MSDN上的Custom Numeric Format Strings页面中找到它。我将离开另一个链接,因为它很有用。
好的,所以我只能假设MaskedTextBox
不使用普通StringFormat
然后......我猜你是因为特殊原因而使用它,但如果你可以使用一个TextBlock
,您应该能够以您想要的方式显示时间(如果它是实际的DateTime
实例):
<TextBlock Text="{Binding YourTimeProperty, StringFormat={}{0:HH:mm tt}}" />
这应该为您提供您想要的输出:05:34 PM