Allgemein
Grundlagen für Bindings unter XAML.
Bindings auf Eigenschaften (Properties) von Steuerelementen
Folgendes Beispiel erstellt eine Bindung zu dem Steuerelement mit dem Namen “userMenu” auf die Eigenschaft “Background”. Somit ist gewährleistet, dass der Hintergrund des Untermenüs gleich dem Hintergrund des Hauptmenüs ist.
<MenuItem
    Background="{Binding ElementName=userMenu,Path=Background}"
 /><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>Binding auf statische Inhalte
Manchmal kann es nützlich sein, auf statische Inhalte zu verweisen.
xmlns:s="clr-namespace:System;assembly=mscorlib"
<Label
    Text="{x:Static s:Environment.UserName}"
/>Binding auf Settings.Default
Wie du eine Bindung auf ein Settings-Element erstellen kannst, findest du im folgenden Beispiel.
xmlns:properties="clr-namespace:MyApp.Properties"
<Label
    Text="{Binding Source={x:Static properties:Settings.Default}, Path=NAME_OF_PROPERTY}"
/>Binding auf Eigenschaft vom aktuellen Steuerelement (Self)
Um eine Bindung auf eine Eigenschaft desselben Steuerelement zu erstellen, zeigt dir folgendes Beispiel.
<Label
    Text="{Binding RelativeSource={RelativeSource Self}, Path=Text}"
/>Binding auf Eigenschaft eines übergeordneten Steuerelement (Parent)
Wie ein Child-Steuerelement auf eine Eigenschaft eines Parent-Steuerelementes zugreifen kann, siehst du folgend.
<Label
    Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window, AncestorLevel=1}}"
/>Dabei gibt der AncestorType den Datentypen des zu suchenden, übergeordneten Steuerelement. Das AncestorLevel gibt die Tiefe der Suche an. Bei “1” wird das erste Steuerelement des Typens “Window” verwendet.
Eingabeelemente
TextBox
Nützliche Bindings für Textboxen.
Bei Enter nächstes Element fokussieren
Manchmal kann es hilfreich sein, wenn durch die “Enter”-Taste das nächste Eingabeelement fokussiert wird. Dies ist mit wenig Code leicht realisierbar.
<UserControl x:Class="Example.Views"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors"
     
     mc:Ignorable="d" Loaded="UserControl_Loaded" 
     >
    <Grid>
    </Grid>
</UserControl><!-- Verhalten für die jeweiligen Eingabeelemente -->
<behaviors:Interaction.Triggers>
    <behaviors:EventTrigger EventName="KeyDown" >
        <behaviors:InvokeCommandAction
            Command="{Binding TextBoxKeyDownEventCommand}"
            PassEventArgsToCommand="True"
            />
    </behaviors:EventTrigger>
</behaviors:Interaction.Triggers>public ICommand TextBoxKeyDownEventCommand { get => new RelayCommand((p) => TextBoxKeyDownEventAction(p)); }
void TextBoxKeyDownEventAction(object args)
{
    try
    {
        if(args is KeyEventArgs keyArgs)
        {
            if(keyArgs.Key == Key.Enter)
            {
                if (keyArgs.Source is TextBox tb)
                {
                    keyArgs.Handled = true;
                    TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Next)
                    {
                        Wrapped = true
                    };
                    tb.MoveFocus(request);
                }
            }
        }
    }
    catch (Exception exc)
    {
        //handle any errors here
    }
}