【问题标题】:Why those different string formats on TimeSpan on XAML?为什么在 XAML 中的 TimeSpan 上有那些不同的字符串格式?
【发布时间】:2011-10-02 15:26:54
【问题描述】:

我快疯了。有人可以解释一下为什么这些格式化相同内容的字符串格式如此不同吗?

<DataGridTextColumn Header="Max Time" IsReadOnly="True" Binding="{Binding MaxTime, StringFormat=hh\\:mm\\:ss, TargetNullValue=---}"> 

<DataGridTextColumn Header="Min Time" IsReadOnly="True">
    <DataGridTextColumn.Binding>
        <Binding Path="MinTime" StringFormat="{}{0:hh':'mm':'ss}" TargetNullValue=" --- "/>
    </DataGridTextColumn.Binding>
 </DataGridTextColumn>

当然,每一个都不能对另一个起作用。

编辑:我使用 WPF 的次数越多,我就越觉得它不是一个足够成熟的产品。

【问题讨论】:

    标签: wpf xaml string-formatting timespan


    【解决方案1】:

    我不是格式化 TimeSpan 方面的专家,所以我不能确切地告诉你为什么它们会产生相同的结果,但你可以在这里阅读:Custom TimeSpan Format Strings

    当然,每一个都不能对另一个起作用。

    它们的工作方式相同,只是您应该在双引号中使用一个反斜杠。以下

    <Binding Path="MinTime"
             StringFormat="hh\\:mm\\:ss"
             TargetNullValue=" --- "/>
    

    来到hh\\\\:mm\\\\:ss。所以你应该写

    <Binding Path="MinTime"
             StringFormat="hh\:mm\:ss"
             TargetNullValue=" --- "/>
    

    以下两个Bindings应该产生相同的结果

    <DataGridTextColumn Header="Max Time" IsReadOnly="True"
                        Binding="{Binding Path=MaxTime,
                                          StringFormat=hh\\:mm\\:ss,
                                          TargetNullValue=' --- '}"/>
    <DataGridTextColumn Header="Min Time" IsReadOnly="True">
        <DataGridTextColumn.Binding>
            <Binding Path="MinTime"
                     StringFormat="hh\:mm\:ss"
                     TargetNullValue=" --- "/>
        </DataGridTextColumn.Binding>
    </DataGridTextColumn>
    

    以下两个也应该这样

    <DataGridTextColumn Header="Max Time" IsReadOnly="True"
                        Binding="{Binding Path=MaxTime,
                                          StringFormat={}{0:hh':'mm':'ss},
                                          TargetNullValue=' --- '}"/>
    <DataGridTextColumn Header="Min Time" IsReadOnly="True">
        <DataGridTextColumn.Binding>
            <Binding Path="MinTime"
                     StringFormat="{}{0:hh':'mm':'ss}"
                     TargetNullValue=" --- "/>
        </DataGridTextColumn.Binding>
    </DataGridTextColumn>
    

    【讨论】:

    • 嗯,我会说我试过 \: 但现在我又试了一次,它的工作......很奇怪......无论如何谢谢。
    • @SoMos:是的,我知道,它发生了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多