gpt4 book ai didi

c# - WPF TimeSpan 绑定(bind)到没有毫秒的标签

转载 作者:行者123 更新时间:2023-12-02 17:49:14 24 4
gpt4 key购买 nike

在我当前的项目中,我试图显示一个具有 TimeSpan 绑定(bind)的标签。实际上 xaml 看起来很简单:

<Label Content="{Binding ElementName=Root, Path=DataSource.TimeTotal, StringFormat={}{0:hh\:mm}}"/>

这正是 this question 中显示的内容.但它不起作用,它始终显示完整时间,而不仅仅是小时和分钟。

我测试了很多解决方案,但没有一个有效。

最佳答案

建议的解决方案

也许只是尝试使用 TextBox 而不是 Label 并绑定(bind) Text 而不是 Content。您可以在此处找到绑定(bind)示例:How to format TimeSpan in XAML。还值得注意的是,TextBlockLabel 更轻量级,因此应尽可能使用它。

替代解决方案

如果你出于某种原因想要使用 Label,似乎有一个 Label 本身的 a property called ContentStringFormat,所以你的 xaml 可以看起来像:

<Label Content="{Binding ElementName=Root, Path=DataSource.TimeTotal}" ContentStringFormat="hh\\:mm"/>

另一种解决方案是实现自定义 IValueConverter,您可以在其中将字符串格式作为转换器的参数传递,并在转换器的代码中手动设置值的格式。然后,该解决方案应该适用于所有适当的控件类型。有关值转换器的更多信息,请参见 herehere

字符串格式化属性

正如 Erode 在评论中所写,似乎还有其他控件 StringFormat 不起作用。但是,对于从 ContentControl 派生的控件,您应该能够使用 ContentStringFormat,对于从 ItemsControl 派生的控件,有一个 ItemStringFormat 属性。有几个示例的链接展示了如何使用它们: http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx

关于c# - WPF TimeSpan 绑定(bind)到没有毫秒的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com