WPF: Tabs

In WPF ist es möglich, Registerkarten (auch Tabs genannt) zu erstellen. Diese Möglichkeit kennen wir bereits von WinForm. Der Aufbau der Steuerelemente sowie der Eigenschaften ist ähnlich und teilweise identisch mit denen von Windows Forms. Deshalb haben wir unser Beispiel ähnlich wie im WinForm-Beispiel aufgebaut. So können Sie einen direkten Vergleich vornehmen.
Als Haupt-Element für die Tab-Funktionalität benötigen wir das Steuerelement TabControl. Diesem Steuerelement werden TabItem-Steuerelemente in der XML-Struktur untergeordnet. Dabei stellen die TabItem-Elemente die einzelnen Registerkarten dar, welchen nun ein Layout-Panel untergeordnet wird. Diesem werden dann üblicherweise weitere Steuerelemente untergeordnet. Im TabItem-Objekt selbst setzen wir noch die Eigenschaft Header, um den Titel des Tabs festzulegen. Wollen wir den Index der angezeigten Registerkarte abfragen oder festlegen, so kann uns die Eigenschaft SelectedIndex des TabControl-Steuerelements helfen.

MainWindow.xaml

<TabControl Name="tabControlFenster">
	<TabItem Header="Tab 1">
		<Grid Background="White">
			<Button VerticalAlignment="Center" HorizontalAlignment="Center" Padding="10" FontWeight="Bold" Content="Zu Tab 2 wechseln" Click="tab1Button_Click" />
		</Grid>
	</TabItem>
	<TabItem Header="Tab 2">
		<Grid Background="White">
			<Button VerticalAlignment="Center" HorizontalAlignment="Center" Padding="10" FontWeight="Bold" Content="Ändere Hintergrund" Click="tab2Button_Click" />
		</Grid>
	</TabItem>
	<TabItem Header="Tab 3">
		<Grid Background="White">
			<Button VerticalAlignment="Center" HorizontalAlignment="Center" Padding="10" FontWeight="Bold" Content="Programm beenden" Click="tab3Button_Click" />
		</Grid>
	</TabItem>
</TabControl>

MainWindow.xaml.cs
private void tab1Button_Click(object sender, RoutedEventArgs e)
{
	tabControlFenster.SelectedIndex = 1;
}

private void tab2Button_Click(object sender, RoutedEventArgs e)
{
	Grid oGrid = (Grid)((Button)sender).Parent;

	if (oGrid.Background == Brushes.Blue)
		oGrid.Background = Brushes.White;
	else
		oGrid.Background = Brushes.Blue;
}

private void tab3Button_Click(object sender, RoutedEventArgs e)
{
	this.Close();
}
Download

LinksRechts