WPF, Silverlight, Windows Phone 8 und Windows-Store-App

WPF: FrameworkElement-Instanz in Ressourcen teilen
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF: FrameworkElement-Instanz in Ressourcen teilen“.

Das Bereitstellen von einer FrameworkElement-Instanz wird wie gewohnt mit benötigtem Key im Ressourcenbereich deklariert. Der Zugriff erfolgt ebenfalls über das StaticResource Binding. Es gibt dennoch ein Problem, wenn die gewünschte Instanz öfter als einmal benötigt wird.

Der XAML-Parser löst dann eine XamlParseException aus, mit der Begründung, dass die Instanz bereits im Einsatz ist. Das ist ein unangenehmer Seiteneffekt, denn gerade dafür gibt es den Ressourcenbereich.

Die Lösung: x:Shared AttachedProperty

Zur Lösung wird einfach nur auf das x:Shared AttachedProperty zurückgegriffen, das auf False gesetzt wird. Dadurch wird für die FrameworkElement-Instanz immer wieder eine neue Instanz erzeugt, wenn diese mehrfach zum Einsatz kommen soll (Listing 1).

<Window.Resources>
    <Rectangle x:Key="Rectangle" Width="90" Height="90" Fill="BlueViolet" x:Shared="False" />
</Window.Resources>
    
<StackPanel>
    <Border Child="{StaticResource Rectangle}" />
    <Button Content="{StaticResource Rectangle}" />
</StackPanel>
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -