我很感兴趣这个问题:MultiBinding StringFormat of TimeSpan
如果我定义了以下绑定,其中StartTime的类型为TimeSpan:
问题是,有人知道为什么吗?这是一个错误还是预期行为?对我来说,使用MultiBinding获得相同的输出,需要在格式字符串中将“\:”更改为“:”,这似乎很奇怪(正如我在回答原始问题时发现的)。
<TextBlock Text={Binding Path=StartTime, StringFormat='{}From {0:hh\\:mm}'}" />
以上绑定按预期进行评估。然而,正如原问题中的情况所示,如果我尝试在MultiBinding中使用相同的格式字符串,则会出现FormatException错误:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}From {0:hh\\:mm} to {1:hh\\:mm}">
<Binding Path="StartTime" />
<Binding Path="EndTime" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
问题是,有人知道为什么吗?这是一个错误还是预期行为?对我来说,使用MultiBinding获得相同的输出,需要在格式字符串中将“\:”更改为“:”,这似乎很奇怪(正如我在回答原始问题时发现的)。
StringFormat
指定为Binding
MarkupExtension
的一部分,并用单引号标记它。在第二个示例中,您通过属性传递它。尝试更改您的第一个示例以使用显式的Binding
对象,并以相同的方式传递StringFormat
:<TextBlock.Text><Binding Path="StartTime" StringFormat="{}From {0:hh\\:mm}"/></TextBlock.Text>。我猜它不会起作用。通常会出现解析/转义问题,而错误消息通常没有帮助。 - Kent Boogaart