Property-Elemente am Beispiel Content

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Unter Access konnten Sie beispielsweise in einer Schaltfläche lediglich einen Text als Inhalt unterbringen. In neueren Versionen kamen dann noch einige Features zur Gestaltung von Rand, Hintergrund, Bildern et cetera hinzu. Unter WPF sieht das ganz anders aus. Eine Schaltfläche bringt zwar mit der Content-Eigenschaft die Möglichkeit mit, einfache Texte einzugeben und liefert auch noch einige weitere Attribute, mit denen sich andere gängige Eigenschaften wie Rahmen, Hintergrund und so weiter einstellen lassen. Aber die Content-Eigenschaft nimmt nicht nur reine Texte, sondern nahezu beliebige Inhalte entgegen und zeigt diese innerhalb des Buttons an. Der Button ist dabei übrigens nur ein Beispiel – es gibt noch weitere Steuerelemente, welche die Content-Eigenschaft anbieten.

Einfache Texte

Wenn Sie wie beispielsweise unter Access einfach nur einfache Texte in einer Schaltfläche anzeigen möchten, weisen Sie diese einfach der Eigenschaft Text zu. Unter WPF gibt es dafür das Attribut Content, das wir im folgenden Beispiel mit dem Text Beispielbutton füllen (Ergebnis siehe Bild 1):

Button mit einfachem Text

Bild 1: Button mit einfachem Text

<Button Height="25" Width="120" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10" Content="Beispielbutton"></Button>

Content mit anderem Objekt füllen

Wenn Sie nun nicht nur einen einfachen Text als Content verwenden möchten, sondern beispielsweise ein anderes Objekt wie einen Text mit einem Bild, scheint dies mit dem Content-Attribut allein nicht möglich. Unter C# könnten Sie das aber beispielsweise wie folgt lösen:

public partial class MainWindow : Window {
     public MainWindow() {
         InitializeComponent();
         Button btn = new Button();
         btn.Width = 150;
         btn.Height = 32;
         StackPanel stp = new StackPanel();
         Image img = new Image();
         img.Source = new BitmapImage(new Uri(@"/ContentProperty;component/images/close.png", UriKind.Relative));
         img.Width = 24;
         img.Height = 24;
         img.Margin = (Thickness)System.ComponentModel.TypeDescriptor.GetConverter(typeof(Thickness)).
             ConvertFromInvariantString("5,0,5,0");
         TextBlock txt = new TextBlock();
         txt.Text = "Button mit Bild";
         txt.VerticalAlignment = VerticalAlignment.Center;
         stp.Children.Add(img);
         stp.Children.Add(txt);
         stp.Orientation = Orientation.Horizontal;
         btn.Content = stp;
         btn.HorizontalContentAlignment = HorizontalAlignment.Left;
         MyGrid.Children.Add(btn);
     }
}

Zusätzlich müssen Sie das Grid-Element im .xaml-Code noch entsprechend benennen, damit wir über die Bezeichnung MyGrid darauf zugreifen können:

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar