В WPF XAML, как я могу связать 2 константы, таким образом, я могу использовать, предопределяют пути?

Я хочу заменить часть пути исходного пути с c# константой для более легкого управления путем, например, я имею:

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

и в другом классе мне определили мою константу:

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

Я хочу иметь что-то вроде:

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

Это означает, что я могу изменить путь глобально одним махом, если потребность возникает. Что синтаксис должен сделать это?

13
задан ASh 6 October 2018 в 09:53
поделиться

3 ответа

Замена пути означает, что вам нужно выполнить привязку данных ... Так почему бы вам не сохранить в своем классе C # полный путь к файлу и привязать к нему?

2
ответ дан 1 December 2019 в 22:22
поделиться

Самый простой способ сделайте это с помощью 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 не подумал, что это расширение разметки.

18
ответ дан 1 December 2019 в 22:22
поделиться

Вам стоит взглянуть на обсуждение в этой теме: манипуляция строками в атрибуте xaml

В принципе, вы можете создать собственное расширение разметки, которое принимает 2 параметра и конкатенирует их. Этот конкретный пример также используется для связывания. Я подозреваю, что вы хотите иметь возможность привязки к месту, где определен корневой путь, или к каким-то другим данным.

2
ответ дан 1 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: