在文本框上更新蒙版样式的时间

时间:2013-11-15 16:15:10

标签: wpf silverlight xaml silverlight-5.0

我对所有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”。

1 个答案:

答案 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