我从网络服务(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/110x110(StringFormat
)
并返回
http://myurl.com/users/user_id/12/crop/110x110?last_update=timestamp
但是转换器需要/users/user_id/12?last_update=timestamp
(没有StringFormat
)。
这是正常行为吗?
答案 0 :(得分:5)
嗯,应该是这样的。您可以将任何值绑定到字符串依赖项属性。 Converter用于将 类型转换为 target 类型。由于字符串格式化仅适用于字符串,因此在转换器之前进行操作是没有意义的,只能在字词之后。
以下是一个例子:
{Binding SomeBoolValue,
StringFormat=You said \{0\},
Converter={StaticResource BoolToString}}
其中BoolToString
为true
返回“是”,false
为“否”。
在将源类型转换为目标类型后,格式化必须。
您可以将数据作为ConverterParameter
发送,但不能绑定到静态属性。你最好的解决方案是在这里创建一个附加属性来进行绑定和转换。