W języku WPF XAML, jak można połączyć 2 stałe, aby użyć wstępnie zdefiniowanych ścieżek?


Chcę zastąpić część oryginalnej ścieżki ścieżki stałą c # w celu łatwiejszej manipulacji ścieżką, na przykład mam:
<Image Source="/Images/Themes/Buttons/MyPicture.png"/>

aw innej klasie mam zdefiniowaną stałą:
public static readonly string UriImagesButtons = "/Images/Big/PNG/";

Chcę mieć coś takiego:
<Image Source="{static:UriImagesButtons + MyPicture.png}"/>

Oznacza to, że w razie potrzeby mogę globalnie zmienić ścieżkę za jednym pociągnięciem. Jaka jest składnia tego?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Najłatwiej to zrobić za pomocą MultiBinding z 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>

W parametrze StringFormat należy zmienić znaczenie pierwszego nawiasu klamrowego za pomocą „{}”, aby analizator XAML nie pomyślał, że jest to rozszerzenie znaczników.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zastąpienie ścieżki oznacza, że ​​musisz utworzyć powiązanie danych ... Dlaczego więc nie zapiszesz pełnej ścieżki do pliku w swojej klasie C # i nie powiążesz się z nim?
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Warto przyjrzeć się dyskusji na ten temat:

manipulowanie ciągami znaków w atrybucie
http://social.msdn.microsoft.c ... 84318
xaml
Zasadniczo możesz utworzyć własne rozszerzenie znaczników, które pobiera 2 parametry i łączy je. Ten konkretny przykład jest również używany do wiązania. Podejrzewam, że chciałbyś być w stanie połączyć się z miejscem, w którym masz zdefiniowaną ścieżkę główną, lub być może z innymi danymi.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się