2013-10-04 43 views
1

我拿用户的化身URL从Web服务(User.Avatar):绑定的StringFormat和转换器一起

/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

请更清楚地解释你的问题。 – Sheridan

+1

对不起Sheridan,我试图做不可能的事情,请检查Toni Petrina的答案 – Alexandr

回答

4

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

下面是一个例子:

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

BoolToString回报“是” true和“否false 格式化你转换的源类型为目标类型后,必须发生

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