将StringFormat和Converter绑定在一起

时间:2013-10-04 07:37:12

标签: wpf windows-phone-7 data-binding windows-phone-8

我从网络服务(User.Avatar)中获取用户的头像网址:

 /users/user_id/12?last_update=timestamp

在不同的控件中,我必须使用不同大小的头像(Web服务可以裁剪并调整图像大小):

 ImageSource="{Binding User.Avatar, StringFormat=http://myurl.com/\{0\}/crop/110x110, Converter={StaticResource ImageSizeUrlConverter}}"/>

转换器必须

http://myurl.com/users/user_id/12?last_update=timestamp/crop/110x110StringFormat

并返回

http://myurl.com/users/user_id/12/crop/110x110?last_update=timestamp

但是转换器需要/users/user_id/12?last_update=timestamp(没有StringFormat)。

这是正常行为吗?

1 个答案:

答案 0 :(得分:5)

嗯,应该是这样的。您可以将任何值绑定到字符串依赖项属性。 Converter用于将 类型转换为 target 类型。由于字符串格式化仅适用于字符串,因此在转换器之前进行操作是没有意义的,只能在字词之后。

以下是一个例子:

{Binding SomeBoolValue,
         StringFormat=You said \{0\},
         Converter={StaticResource BoolToString}}

其中BoolToStringtrue返回“是”,false为“否”。 在将源类型转换为目标类型后,格式化必须

您可以将数据作为ConverterParameter发送,但不能绑定到静态属性。你最好的解决方案是在这里创建一个附加属性来进行绑定和转换。