Beispiele für Bindings in WPF

Im Gegenzug zu WinForms basiert WPF auf XAML (basierend auf dem XML Format). Dies bietet erweiterte Möglichkeiten die Benutzeroberfläche (UI) zu gestalten. Ein nützliches Werkzeug sind die sogenannten Bindings. Dies ermöglicht das „Binden“ einer Eigenschaft (Property) an einen festen oder dynamischen Wert. Folgend finden Sie ein paar Beispiele.

An eine Eigenschaft binden

Bindet die gewünschte Eigenschaft des Objektes an eine Eigenschaft eines anderen Objektes.

Background="{Binding ElementName=userMenu,Path=Background}"

Beispiel

<MenuItem x:Name="userMenu" DockPanel.Dock="Right" Background="#FF444444" Foreground="White" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="48" Header="Username" > <MenuItem x:Name="userMenuLogout" Background="{Binding ElementName=userMenu,Path=Background}" Foreground="{Binding ElementName=userMenu,Path=Foreground}" Header="Abmelden" ></MenuItem> </MenuItem>

Environment Properties binden

Header="{x:Static s:Environment.UserName}"

Dazu müssen Sie folgenden Namespace in Ihrer XAML Datei einbinden.

xmlns:s="clr-namespace:System;assembly=mscorlib"

Properties.Settings.Default binden

Wenn Sie eine Bindung für eine Einstellung vornehmen wollen, so können Sie dies wie folgt machen:

Voraussetzungen

Deklarieren Sie erst folgenden Namespace in Ihrer XAML Datei. Ersetzen Sie dazu „YOUR_NAMESPACE“ mit Ihrem aktuellen.

xmlns:properties="clr-namespace:YOUR_NAMESPACE.Properties"

Implementation

Um nun Zugriff auf eine Eigenschaft in den Einstellungen zu erhalten, müssen Sie Ihre Bindung wie folgt aufbauen:

Title="{Binding Source={x:Static properties:Settings.Default}, Path=NAME_OF_PROPERTY}"

Eigene Eigenschaft binden

Content="{Binding RelativeSource={RelativeSource Self}, Path=Text}"

Übergeordnetes Element binden (Vorfahre)

Wenn Sie eine Bindung mit einer Eigenschaft eines übergeordneten Objektes eingehen wollen, so können Sie dies wie folgt machen:

{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window, AncestorLevel=1}}

Der „Type“ beschreibt den zu findenden Vorfahren. Zum Beispiel bei einer DataGridRow wäre der nächste Vorfahre das DataGrid selbst. Dann müsst Ihr hier als Datentyp „DataGrid“ angeben.

Das Level beschreibt, wie weit in die Tiefe der Vorfahre gesucht werden soll.

Was this article helpful?

Related Articles

Leave A Comment?

This site uses Akismet to reduce spam. Learn how your comment data is processed.