【问题标题】:Updating the mask style on a text box for time及时更新文本框上的蒙版样式
【发布时间】:2013-11-16 02:52:03
【问题描述】:

我对所有 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 之类的格式保存,那么它将以这种方式显示,请注意缺少 “0” 在 5 之前? 所以我需要修改这个掩码,让它也总是显示前导“0”。

【问题讨论】:

    标签: wpf silverlight xaml silverlight-5.0


    【解决方案1】:

    尝试改用以下StringFormat(假设MaskedTextBox 使用的是StringFormat):

    <Setter Property="Mask" Value="00:00 ll" />
    

    # 字符是“任何字符”占位符,而0 字符应该显示0,如果该空间中没有其他值。您可以从 MSDN 上的Custom Date and Time Format Strings 页面了解更多信息。

    但是,如果来自数据库的值为string,则无法应用StringFormat。


    更新>>>

    我刚刚意识到我为零占位符链接到了 MSDN 上的错误页面...您可以在 MSDN 上的 Custom Numeric Format Strings 页面中找到它。我会留下另一个链接,因为它很有用。

    好的,所以我只能假设 MaskedTextBox 不使用普通的 StringFormat 然后...我猜您出于特定原因使用它,但如果您可以使用 TextBlock ,您应该能够以您想要的方式显示时间(如果它是实际的DateTime 实例):

    <TextBlock Text="{Binding YourTimeProperty, StringFormat={}{0:HH:mm tt}}" />
    

    这应该会为您提供您想要的输出:05:34 PM

    【讨论】:

    • 现在试试,谢谢。所有这些面具也有很好的参考吗?
    • 我刚刚在我的答案中添加了一个。
    • 谢谢,但只要我添加 StringFormat 东西,它就会给出编译错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多