12.2 Steuerelemente
Die Toolbox bietet für die WPF zahlreiche Steuerelemente, wenn auch noch nicht ganz so viele wie für Windows Forms. Im nachfolgenden Projekt WPFSteuerelemente werden einige Möglichkeiten gezeigt, siehe Abbildung 12.2.
Abbildung 12.2 Projekt »WPFSteuerelemente«
Zunächst der XAML-Code:
<Window x:Class="MainWindow"
xmlns="..." xmlns:x="..."
Title="WPFSteuerelemente" Height="200" Width="300">
<StackPanel>
<WrapPanel>
<Label Margin="5">Beschriftung: </Label>
<CheckBox x:Name="cb" Margin="10" Checked="cb_Checked"
Unchecked="cb_Unchecked" >CheckBox</CheckBox>
<TextBox x:Name="tb" Width="150"
Margin="5">Das ist ein Text</TextBox>
<Button Margin="5"
Click="bu_Click">markierter Text</Button>
</WrapPanel>
<ListBox x:Name="lb" Margin="5" SelectionMode="Multiple"
SelectionChanged="lb_SelectionChanged">
<ListBoxItem>Frankreich</ListBoxItem>
<ListBoxItem
Selector.IsSelected="True">Spanien</ListBoxItem>
<ListBoxItem
Selector.IsSelected="True">Italien</ListBoxItem>
</ListBox>
<Slider x:Name="sl" Margin="5" TickFrequency="1"
TickPlacement="BottomRight" IsSnapToTickEnabled="True"
ValueChanged="sl_ValueChanged" />
</StackPanel>
</Window>
Listing 12.3 Projekt WPFSteuerelemente, XAML-Code
Innerhalb eines StackPanels gibt es insgesamt drei Elemente: ein WrapPanel, eine ListBox zur Auswahl von mehreren Einträgen und einen Slider zur Auswahl eines Zahlenwertes. Innerhalb eines WrapPanels werden die Elemente nebeneinander aufgereiht. Ist nicht genügend Platz, so wird in der nächsten Reihe fortgefahren. Beachten Sie die Anordnung auch einmal nach einer manuellen Vergrößerung oder Verkleinerung des Fensters.
Das WrapPanel beinhaltet vier Elemente: ein Label zur Beschriftung, eine CheckBox zum Markieren, eine TextBox für die Eingabe und einen Button. Die Ereignisse Checked und Unchecked der CheckBox (Setzen und Löschen der Markierung) führen zu unterschiedlichen Prozeduren.
Die Eigenschaft SelectionMode einer ListBox bietet unter Anderem den Wert Multiple. Dies führt dazu, dass jeder Klick auf einen Eintrag dessen Auswahlzustand umschaltet. Die Attached Property IsSelected des Typs Selector kann zur Vorauswahl eines Eintrags genutzt werden. Das Ereignis SelectionChanged tritt ein, sobald sich die Auswahl innerhalb der ListBox ändert.
Die Eigenschaften Minimum und Maximum eines Sliders haben als Standard die Werte 0 und 10. Die Eigenschaften TickFrequency und TickPlacement legen die Häufigkeit und den Ort der Ticks, also der kleinen Markierungsstriche am Slider fest. Falls man die boolesche Eigenschaft IsSnapToTickEnabled auf True stellt, dann können nur die Werte der Ticks erreicht werden. Das Ereignis ValueChanged tritt ein, sobald sich der Wert des Sliders ändert.
Es folgt der Programmcode:
Class MainWindow
Private Sub cb_Checked(sender As Object,
e As RoutedEventArgs)
MessageBox.Show("eingeschaltet")
End Sub
Private Sub cb_Unchecked(sender As Object,
e As RoutedEventArgs)
MessageBox.Show("ausgeschaltet")
End Sub
Private Sub bu_Click(sender As Object,
e As RoutedEventArgs)
MessageBox.Show(tb.Text & " / " & tb.SelectedText)
End Sub
Private Sub lb_SelectionChanged(sender As Object,
e As SelectionChangedEventArgs)
If IsLoaded Then
Dim ausgabe As String = ""
For Each lbi As ListBoxItem In lb.SelectedItems
ausgabe &= lbi.Content & " "
Next lbi
MessageBox.Show(ausgabe)
End If
End Sub
Private Sub sl_ValueChanged(sender As Object,
e As RoutedPropertyChangedEventArgs(Of Double))
If IsLoaded Then MessageBox.Show(sl.Value)
End Sub
End Class
Listing 12.4 Projekt »WPFSteuerelemente«, Programmcode
Die Eigenschaft IsLoaded eines Window-Objekts liefert die Information, ob die Oberfläche schon vollständig geladen wurde. Erst dann wollen wir eine Reaktion sehen, wenn sich zum Beispiel die Auswahl der ListBox oder der Wert des Sliders ändern.
Die Eigenschaft Text beinhaltet den gesamten Text einer TextBox, SelectedText nur den aktuell markierten Text. Die einzelnen Einträge einer ListBox sind vom Typ ListBoxItem und stehen in der Auflistung Items. Die Eigenschaft Content beinhaltet den Text eines Eintrags.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.