Die Bindung einer datacontext-string-Eigenschaft, um ein StaticResource-Schlüssel
Ich habe eine Liste von Werten mit einer ResourceKey und eine Beschriftung, diese Werte sind beide strings. Die Resource der name einer Ressource definiert, die in einem ressourcenwörterbuch. Jede dieser ResourceKey Icons Leinwand.
<Data ResourceKey="IconCalendar" Caption="Calendar"/>
<Data ResourceKey="IconEmail" Caption="Email"/>
Dann habe ich eine Liste anzeigen, die ein datatemplate mit einem Knopf und einem text-Beschriftung unterhalb der Taste. Was ich tun möchte, ist die display-Ressource statische Ressource als Inhalt für die Schaltfläche.
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Button Content="{Binding ResourceKey}" Template="{StaticResource RoundButtonControlTemplate}"/>
<TextBlock Grid.Row="1" Margin="0,10,0,0" Text="{Binding Caption}" HorizontalAlignment="Center" FontSize="20" FontWeight="Bold" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
Ich glaube, ich habe versucht, jede permutation mit Bindung staticresource etc.
Ich bin offen für alternativen, ich weiß, es kann einfacher einfach ein image und die source-Eigenschaft festlegen.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach ein wenig denke ich Ende mit einem
ValueConvertor
etwa so:und die Bindung auf den button wird
Hier habe ich eine verbesserte version von @dvkwong 's Antwort (zusammen mit @Anatoliy Nikolaev 's edit):
Verwendung:
Die primäre änderung ist hier:
Der Konverter ist jetzt ein
System.Windows.Markup.MarkupExtension
so kann es direkt genutzt werden, ohne dass erklärt wird, wie eine Ressource.Konverter ist in der Kontext-bewusst, so wird es nicht nur nach oben schauen in der Ressourcen Ihrer App, sondern auch lokale Ressourcen (current window, usercontrol oder Seite etc.).