C# WPF TimeSpan绑定到标签,无需毫秒
在我当前的项目中,我试图显示一个具有TimeSpan绑定的标签。 实际上,xaml看起来很简单:C# WPF TimeSpan绑定到标签,无需毫秒,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,在我当前的项目中,我试图显示一个具有TimeSpan绑定的标签。 实际上,xaml看起来很简单: <Label Content="{Binding ElementName=Root, Path=DataSource.TimeTotal, StringFormat={}{0:hh\:mm}}"/> 这正是图中所示。但它不起作用,它总是显示全部时间,而不仅仅是小时+分钟 我测试了很多解决方案,但没有一个有效。建议的解决方案 可能只是尝试使用文本框而不是标签,并绑定文本而不是内容。您
<Label Content="{Binding ElementName=Root, Path=DataSource.TimeTotal, StringFormat={}{0:hh\:mm}}"/>
这正是图中所示。但它不起作用,它总是显示全部时间,而不仅仅是小时+分钟
我测试了很多解决方案,但没有一个有效。建议的解决方案
可能只是尝试使用
文本框
而不是标签
,并绑定文本
而不是内容
。您可以在此处找到绑定的示例:。还值得注意的是,TextBlock
比Label
更轻量级,因此应该尽可能使用它
替代解决方案
如果出于某种原因想使用标签
,则似乎有一个标签
本身,因此您的xaml可以如下所示:
<Label Content="{Binding ElementName=Root, Path=DataSource.TimeTotal}" ContentStringFormat="hh\\:mm"/>
另一个解决方案是实现一个自定义的IValueConverter
,您可以将字符串格式作为转换器的参数传递,并在转换器的代码中手动格式化值。然后,此解决方案应适用于所有适当的控制类型。有关值转换器的更多信息,请参见
字符串格式属性
正如侵蚀在评论中写道的那样,似乎还有其他StringFormat
不起作用的控件。
但是,对于从ContentControl
派生的控件,您应该能够使用ContentStringFormat
,对于从ItemsControl
派生的控件,有一个ItemStringFormat
属性。有一个链接,其中有几个示例介绍如何使用这些示例:
它与
TextBlock
一起工作,这是与标签
相当的轻量级功能。每当您绑定到使用ContentPresenter
显示数据的控件中的依赖项属性时,它似乎会吃掉您提供的StringFormat
。(在标签
,按钮
等中)。希望有人能告诉我们为什么!您可以在标签中嵌套一个TextBlock
,或者只使用TextBlock
(除非您需要访问文本,否则这通常是一个更好的选择)。您使用的是什么版本的.NET?TimeSpan仅在.NET 4中获得了格式字符串。@Asif已对其进行了测试,但不起作用。@jonsket.NET 4.0,非客户端配置文件。这就是问题所在,它不起作用,现在让我很生气-/可能只是尝试使用文本框
而不是标签
,并绑定文本
而不是内容
。您可以在此处找到绑定的示例:。让我知道它是否适用于您。它适用于TextBlock,它相当于Label。每当您绑定到使用ContentPresenter
显示数据的控件中的依赖项属性时,它似乎会吃掉您提供的StringFormat
。(在标签
,按钮
等中)。希望有人能告诉我们为什么!您可以在标签中嵌套TextBlock
,也可以只使用TextBlock
(除非您需要访问文本,否则这通常是更好的选择)。