WPF: „ItemTemplate“ – komplette Weite verwenden
Ein toller Aspekt von XAML ist die automatische Ausrichtung der Steuerelemente. Etwas schwieriger wird es hingegen für ItemTemplates. Diese werden einmalig gerendert und können für unterschiedliche Inhaltssteuerelemente mit verschiedenen Größen zum Einsatz kommen. Somit hilft nur das Setzen von HorizontalAlignment=“Stretch“ oft nicht weiter.
Als Lösung verwendet man beim Inhaltssteuerelement zusätzlich die HorizontalContentAlignment Property. Sie kümmert sich darum, dass Inhalte beim Rendern automatisch die jeweilige Größe des Inhaltssteuerelements erhalten. In Listing 1 wird die komplette Lösung gezeigt und in Listing 2 wird veranschaulicht, wie die Lösung via Style automatisch für alle Inhaltssteuerelemente festgelegt werden kann.
Listing 1: „ItemTemplate“ soll die komplette Weite verwenden“
<Window.Resources> <DataTemplate x:Key="ItemTemplate"> <StackPanel Background="Azure"> <TextBlock Text="{Binding Property1}" /> <CheckBox IsChecked="{Binding Property2}" /> </StackPanel> </DataTemplate> </Window.Resources> <Grid DataContext="{Binding Source={StaticResource SampleDataSource}}"> <ListBox Width="248" Height="150" HorizontalContentAlignment="Stretch" ItemTemplate="{DynamicResource ItemTemplate}" ItemsSource="{Binding Collection}" /> </Grid>
Listing 2: „HorizontalContentAlignment“ per Style automatisch festlegen“
<Style TargetType="ListBoxItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> </Style>