在WPF XAML中,如何连接2个常量,以便我可以使用预定义路径?

时间:2010-03-13 14:12:57

标签: c# wpf xaml

我想用c#常量替换源路径的路径部分,以便更轻松地进行路径管理,例如我有:

<Image Source="/Images/Themes/Buttons/MyPicture.png" />

在另一个班级中,我有我的常数:

public static readonly string UriImagesButtons = "/Images/Big/PNG/";

我希望有以下几点:

<Image Source="{static:UriImagesButtons + MyPicture.png}" />

这意味着如果需要,我可以一次性全局改变路径。这样做的语法是什么?

3 个答案:

答案 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个参数并连接它们。该特定示例也用于绑定。我怀疑你希望能够绑定到你定义的根路径或其他一些数据。