我试图根据某些条件允许多个图标大小。为此,我有一堆文件夹:'Images\Icons\...\*.png' 其中 ... 是大小(16、32、64、128、256 等)每个文件夹包含所有针对给定大小优化的图标。
我的问题我似乎无法在图像源路径中指定文件夹...即:
<Image x:Name = "img"
Stretch = "None"
Source = "{Binding StringFormat=Images\Icons\{0}\Multi.png,
RelativeSource={RelativeSource Self},
Path=Parent.Parent.Tag}" />
现在,我只是将文件夹名称存储在祖父母的标签中(我将来会绑定到其他东西,但现在我只是想把这一部分拼凑在一起)。当我尝试构建上述 xaml 时,出现错误:
The text \Multi.png ... is not allowed after the closing } of a markup extension.
这让我怀疑它将 {0} 视为标记扩展,而不是我的字符串格式的一部分。我已经阅读了有关使用 {} 转义并使用单引号指定字符串格式的信息,但两者都不起作用:
Source = "{Binding StringFormat={}Images\Icons\{0}\Multi.png, ...
上面返回的错误与我根本不逃避时相同。
Source = "{Binding StringFormat='Images\Icons\{0}\Multi.png', ...
Source = "{Binding StringFormat='{}Images\Icons\{0}\Multi.png', ...
以上两个可以防止错误发生,但会导致图像源为空。
有谁知道如何实现这一目标?
(澄清一下,如果祖父母的标签设置为“16”,那么我希望将图像源绑定到 Images\Icons\16\Multi.png ... 如果标签设置为“32”,那么我需要绑定源到Images\Icons\32\Multi.png。作为测试,我将祖父母标签设置为完整路径,并排除了字符串格式。与祖父母标签的相对绑定成功并显示了图像。只有在以下情况下才会失败我尝试仅使用字符串格式指定文件夹名称以指定路径的其余部分)。