Как установить ширину до 100% в WPF
Есть ли способ передать компонент в WPF, чтобы принять 100% доступного пространства?
Как
width: 100%;
в CSS
У меня есть этот XAML, и я не знаю, как заставить Grid взять 100% ширину.
<ListBox Name="lstConnections">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="LightPink">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Path=User}" Margin="4"></TextBlock>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=Password}" Margin="4"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding Path=Host}" Margin="4"></TextBlock>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Результат выглядит как
alt text http://foto.darth.cz/pictures/wpf_width.jpg
Я сделал его розовым, чтобы было очевидно, сколько места оно занимает. Мне нужно сделать розовую сетку шириной 100%.
Ответы
Ответ 1
Это контейнер Grid
, который накладывает на его ширину. В этом случае a ListBoxItem
, который по умолчанию выравнивается по левому краю. Вы можете настроить его на растяжение следующим образом:
<ListBox>
<!-- other XAML omitted, you just need to add the following bit -->
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Ответ 2
Вы можете использовать HorizontalContentAlignment="Stretch"
следующим образом:
<ListBox HorizontalContentAlignment="Stretch"/>