C#: Xaml Grafiken direkt in Fenster oder Control einbinden als Resource

Veröffentlicht von

Vektor-Grafiken direkt in ein Fenster als Xaml in Ressource einbinden.

In diesem Artikel soll es darum gehen, wie wir für ein Fenster oder eine eigene Komponente eine Grafik direkt in die Ressource der Komponente einbinden können. Wenn es darum geht Grafiken an verschiedenen Orten zu verwenden, ist das natürlich nicht optimal, hier sei auf meinen Beitrag “Xaml Vektorgrafiken in WPF nutzen” verwiesen.

Aber legen wir los, beginnen wir mit unserer Vektor-Grafik, diese habe ich Inkscape gezeichnet und dort als Xaml-Datei exportiert.

Schick, oder? Schauen wir uns die Sache mal im Editor an. Wie man sieht, haben wir hier eine schöne ViewBox und darin befinden sich die Vektorinformationen. Den Code, inklusive ViewBox kopieren wir nun.

Hier der Code beispielhaft:

<Window.Resources>
    <ResourceDictionary>
        <DataTemplate x:Key="IconWarning">
            <Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                     Stretch="Uniform">
                ....
            </Viewbox>
        </DataTemplate>
    </ResourceDictionary>
</Window.Resources>

Die “ViewBox” betten wir in einem “DataTemplate” ein, welchen wir einen Namen in Form eines Keys geben, in unserem Fall “IconWarning”.

Fertig! Damit können wir die Grafik nun in dem Formular/UserControl verwenden. Das Einbinden geht mittels “ContentControl”:

Hier sehen wir auch wieder den Namen unseres Icons, welchen wir im Attribut “ContentTemplate” übergeben.

<ContentControl HorizontalAlignment="Center"
                Margin="0,10,0,0"
                VerticalAlignment="Top"
                Width="256"
                Height="256"
                ContentTemplate="{StaticResource IconWarning}">
</ContentControl>

Das Ergebnis

Fertig! Nach dem Start wird die Grafik nun auch direkt angezeigt.

Download des Beispielprojekts

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.