我从网络服务中获取用户的头像网址(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
)。
这是正常行为?
嗯,应该是这样的。可以将任何值绑定到字符串依赖项属性。转换器用于从该类型转换为目标类型。而且由于字符串格式仅适用于字符串,因此在转换器之前采取行动是没有意义的,只有后记。
下面是一个示例:
{Binding SomeBoolValue,
StringFormat=You said {0},
Converter={StaticResource BoolToString}}
其中,BoolToString
为true
返回"是",为false
返回"否"。格式化必须在将源类型转换为目标类型后进行。
您可以将数据作为ConverterParameter
发送,但不能绑定到静态属性。最好的解决方案是在此处创建一个执行绑定和转换的附加属性。