Я хочу заменить часть пути исходного пути с c# константой для более легкого управления путем, например, я имею:
<Image Source="/Images/Themes/Buttons/MyPicture.png" />
и в другом классе мне определили мою константу:
public static readonly string UriImagesButtons = "/Images/Big/PNG/";
Я хочу иметь что-то вроде:
<Image Source="{static:UriImagesButtons + MyPicture.png}" />
Это означает, что я могу изменить путь глобально одним махом, если потребность возникает. Что синтаксис должен сделать это?
Замена пути означает, что вам нужно выполнить привязку данных ... Так почему бы вам не сохранить в своем классе C # полный путь к файлу и привязать к нему?
Самый простой способ сделайте это с помощью MultiBinding с StringFormat:
<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 не подумал, что это расширение разметки.
Вам стоит взглянуть на обсуждение в этой теме: манипуляция строками в атрибуте xaml
В принципе, вы можете создать собственное расширение разметки, которое принимает 2 параметра и конкатенирует их. Этот конкретный пример также используется для связывания. Я подозреваю, что вы хотите иметь возможность привязки к месту, где определен корневой путь, или к каким-то другим данным.