ListView ItemTemplate 100% ширина
Как я могу сделать содержимое каждого элемента ListView
расширяется до 100% ширины при использовании DataTemplate
?
Я пробовал HorizontalContentAlignment="Stretch"
в ListView
и HorizontalAlignment="Stretch"
в DataTemplate
, но ничего не работает, содержимое по-прежнему выравнивается влево.
У меня есть что-то вроде этого:
<ListView x:Name="questionsView" Background="{StaticResource ApplicationPageBackgroundThemeBrush}" HorizontalContentAlignment="Stretch">
<ListView.ItemTemplate>
<DataTemplate>
<Border Background="BlueViolet" HorizontalAlignment="Stretch">
<Grid HorizontalAlignment="Stretch">
<TextBlock Text="{Binding}" />
<TextBlock HorizontalAlignment="Right">16 minutes ago</TextBlock>
</Grid>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Я думаю, есть еще один слой между ListView
и ItemTemplate
.
Ответы
Ответ 1
Я понял. Установка ListView.ItemContainerStyle
с помощью установщика HorizontalContentAlignment
делает трюк. То есть:.
<ListView x:Name="questionsView" Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<ListView.ItemTemplate>
<DataTemplate>
<Border Background="BlueViolet">
<Grid HorizontalAlignment="Stretch" Margin="0">
<TextBlock Text="{Binding}" />
<TextBlock HorizontalAlignment="Right">16 minutes ago</TextBlock>
</Grid>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
Ответ 2
Задайте свойство контейнера элементов HorizontalContentAlignment для растягивания, попробуйте
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
Ответ 3
Здесь важны ScrollViewer.HorizontalScrollBarVisibility
, TextWrapping
и ItemContainerStyle
с HorizontalContentAlignment
. Остальное - пух.
<ListView VerticalAlignment="Stretch"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Prop1}" TextWrapping="Wrap"/>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
</ListView>