4

我从 Web 服务 ( User.Avatar) 中获取用户的头像 url:

 /users/user_id/12?last_update=timestamp

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

 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/110x110(带StringFormat

并返回

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

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

这是正常行为吗?

4

1 回答 1

8

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

这是一个例子:

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

WhereBoolToString返回“Yes” fortrue和“No for .”必须在将源类型转换为目标类型后进行false格式化。

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

于 2013-10-04T07:58:14.763 回答