【发布时间】:2011-06-30 21:02:43
【问题描述】:
我对这个问题很感兴趣:MultiBinding StringFormat of TimeSpan
如果我定义了以下绑定,其中 StartTime 的类型为 TimeSpan:
<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 中获得相同的输出,我必须将格式字符串中的“\:”更改为“:”(正如我在回答原始问题时发现的那样)。
【问题讨论】:
-
您是否尝试过您链接到的问题的已接受答案中提供的解决方案? stackoverflow.com/questions/6537595/…
-
在您的第一个绑定中,您已将
StringFormat指定为BindingMarkupExtension的一部分,并用单引号将其标出。在第二个示例中,您通过属性传递它。尝试将您的第一个示例更改为使用显式的Binding对象并以相同的方式传入StringFormat:<TextBlock.Text><Binding Path="StartTime" StringFormat="{}From {0:hh\\:mm}"/></TextBlock.Text>。我猜它不会起作用。某种解析/转义问题,通常会出现无用的错误消息。 -
@Brian 我回答了最初的问题,但我不知道为什么我的答案是“正确的”,因为我不知道为什么多重绑定不能使用绑定的格式字符串?
-
@Kent 你可能是对的。我一回到电脑前就试试。
标签: wpf xaml data-binding multibinding