我想用c#常量替换源路径的路径部分,以便更轻松地进行路径管理,例如我有:
<Image Source="/Images/Themes/Buttons/MyPicture.png" />
在另一个班级中,我有我的常数:
public static readonly string UriImagesButtons = "/Images/Big/PNG/";
我希望有以下几点:
<Image Source="{static:UriImagesButtons + MyPicture.png}" />
这意味着如果需要,我可以一次性全局改变路径。这样做的语法是什么?
答案 0 :(得分:18)
最简单的方法是使用带有StringFormat的MultiBinding:
<Path>
<Path.Source>
<MultiBinding StringFormat="{}{0}{1}">
<Binding Mode="OneTime" Source="{x:Static lcl:ConstantOwner.UriImagesButtons}" />
<Binding Mode="OneTime" Source="MyPicture.png" />
</MultiBinding>
</Path.Source>
</Path>
在StringFormat参数中,您必须使用“{}”转义第一个大括号,以便XAML解析器不认为它是标记扩展。
答案 1 :(得分:2)
替换路径意味着您必须进行数据绑定...那么为什么不在C#类中保存完整的文件路径并绑定到它?
答案 2 :(得分:2)
您应该查看有关此主题的讨论:string manipulation in xaml attribute
基本上,您可以创建自己的标记扩展,它接受2个参数并连接它们。该特定示例也用于绑定。我怀疑你希望能够绑定到你定义的根路径或其他一些数据。