Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: WPF – Data Binding auf das PasswordBox-Steuerelement
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger nun schon seit fünf Jahren 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: Data Binding auf das PasswordBox-Steuerelement“.

Ein Data Binding bei Steuerelementen ist unter XAML extrem einfach. Eine Ausnahme hierbei gibt es beim PasswordBox-Steuerelement. Hier kann man nicht wie üblich auf die Text-Property ein Data Binding setzen. Das liegt daran, dass jedes Binding im Memory behandelt wird. Der Cracker könnte sonst mit einfachen Mitteln an das eingegebene Passwort gelangen. Aus diesen Gründen hat Microsoft das Standard-Data-Binding für die Password-Property bewusst ausgelassen. Man müsste entsprechend über die Code-Behind-Datei darauf zugreifen, was aus Architektursicht kein Hochgenuss sein dürfte.

WPF: Data Binding auf das PasswordBox-Steuerelement

Eine bessere Lösung ist das Verwenden von Behaviors. Diese wurden bereits ein einer XAML-Expertise-Folge vorgestellt (Data Binding auf Events). Der große Vorteil: Behaviors geben eine Instanz zum aktuellen Sender mit. So kann ohne Probleme auf die Password-Property vom ViewModel aus zugegriffen werden.

Als Beispiel wird eine WPF-Anwendung mit einem PasswordBox– und Button-Steuerelement angelegt, dazu ein ViewModel erzeugt und mit Expression Blend das CallMethodAction-Behavior über beide Steuerelemente gesetzt. Als EventTrigger wird beim Password-Steuerelement auf das PasswordChanged-Event gesetzt, sodass bei der Eingabe des Passworts die nötigen Infos ans ViewModel überreicht werden. Beim Button wird wie gewohnt auf das Clickevent getriggert. Wird der Button geklickt, soll das Passwort dazu in einer MessageBox angezeigt werden. In Listing 1 und 2 wird die einfache Implementierung dazu gezeigt.

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wpfPasswordBinding="clr-namespace:WpfPasswordBinding"
Title="MainWindow"
Width="525"
Height="350"
mc:Ignorable="d">
<Window.Resources>
<wpfPasswordBinding:MainWindowViewModel x:Key="ViewModel" />
</Window.Resources>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
DataContext="{StaticResource ViewModel}"
Orientation="Horizontal">
<PasswordBox Width="200" Height="25">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PasswordChanged">
<ei:CallMethodAction MethodName="PasswordChanged" TargetObject="{Binding Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</PasswordBox>
<Button
Width="75"
Height="25"
Content="OK">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:CallMethodAction MethodName="SayPassword" TargetObject="{Binding Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
</Window>
public class MainWindowViewModel
{
private string _password;

public void PasswordChanged(object sender, RoutedEventArgs routedEventArgs)
{
var passwordBox = (PasswordBox)sender;
_password = passwordBox.Password;
}

public void SayPassword()
{
MessageBox.Show("Your Password: " + _password);
}
}
...

Abb. 1: Data Binding durch ein CallMethodAction Behavior mit dem PasswordBox-Steuerelement

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

 

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -