Hi,
ich habe in meinen Resourcen ein Canvas, das wiederum ein Path enthält.
Das ganze stellt ein Icon darf, das ich an mehreren Stellen verwenden möchte.
Nun stehe ich aber vor dem Problem, das jedes Control nur einen Parent haben kann, daher habe ich dem Canvas x:Shared auf false gesetzt, damit bei jedem Zugriff eine neue Instanz erzeugt wird.
Das hat allerdings keine Auswirkung, das Icon wird nur in einem der Buttons, in denen ich es verwende, korrekt angezeigt, die Anderen haben keinen Inhalt.
Das Canvas:
XML-Daten
1: 2: 3:
| <Canvas x:Key="icon_create" x:Shared="False"> <Path Data="..."/> </Canvas> |
Die Nutzung:
XML-Daten
1: 2: 3:
| <Button Command="..." Style="{StaticResource DefaultButtonStyle}" Content="{StaticResource appbar_create}" /> |
Und der verwendete Style:
XML-Daten
1: 2: 3: 4: 5: 6:
| <Style x:Key="DefaultButtonStyle" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> <Setter Property="ContentTemplate" Value="{StaticResource ButtonWithIconContentTemplate}" /> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="VerticalContentAlignment" Value="Stretch" /> </Style> |
Das verwendete Template:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| <DataTemplate x:Key="ButtonWithIconContentTemplate"> <Rectangle> <Rectangle.Fill> <VisualBrush> <VisualBrush.Visual> <ContentPresenter Content="{Binding}"/> </VisualBrush.Visual> </VisualBrush> </Rectangle.Fill> </Rectangle> </DataTemplate> |
Das tut erst wie ich will, wenn ich das Canvas in den Resourcen für jede Verwendung manuell kopiere, aber ich kann doch nicht für jeden Button mit diesem Icon einen neuen Eintrag anlegen?
Hat jemand eine Idee, woran das liegt, oder wie ich das umgehen kann?
Beste Grüße