我制作了一个ListView ItemTemplate,我希望它能够响应(当方向发生变化时,例如,listView项目的大小会发生变化)。我使用网格作为网格内部元素的控件,但它没有表现。 ListView.ItemContainerStyle具有属性HorizontalAlignment =" Stretch"这是我想要的行为,而ItemContainerStyle是正确的宽度。在Border和Grid中,我有相同的HorizontalAlignment =" Stretch"当包含在内部的TextBox包含大量文本时,它们会溢出,当TextBox中很少或没有文本时,Border元素会缩小到小于ItemContainerStyle显示的范围。
<ListView ItemsSource="{Binding TileStories}" x:Name="cont" Margin="0,10,0,10" Background="{StaticResource CustomResourceBrush}" BorderBrush="{StaticResource CustomResourceBrush}" Foreground="{StaticResource CustomResourceBrush}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Margin" Value="20,10,20,10" />
<Setter Property="Foreground" Value="{StaticResource BTVioletBrush}" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Border CornerRadius="20" BorderThickness="0" Width="{Binding ScrollViewerWidth}" Background="White" HorizontalAlignment="Stretch">
<StackPanel Height="160" Orientation="Horizontal">
<Grid Background="black">
<TextBox Text="Example">
</Grid>
</StackPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
答案 0 :(得分:1)
只需这样做
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
答案 1 :(得分:0)
为ItemContainerStyle
定义MinHeight为0答案 2 :(得分:0)
添加到ItemContainerStyle
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
我认为Width="{Binding ScrollViewerWidth}"
不是必需的。你可以删除它。
答案 3 :(得分:0)
我没有找到解决方案,但我确实找到了解决方法。如果我使用Width="0"
,其中{Binding ActualWidth, ElementName=StackPanel, Mode=OneWay}
是数据模板中的面板,则网格与StackPanel
绑定。我在VS2013中围绕着设计师,并发现Width
为0,因为(我假设)数据模板中的项目是逐个绘制的,因此Width
在第一个时为零绘制了模板,依此类推。我猜想我没有解释得那么好,但重要的是解决方案:
<PivotItem x:Name="Feed">
....
<Border CornerRadius="20" BorderThickness="0" Background="White" HorizontalAlignment="Stretch">
<StackPanel Height="160" Orientation="Horizontal">
<Grid HorizontalAlignment="Stretch" Width="{Binding ActualWidth, ElementName=Feed, Mode=OneWay}">
........
</Grid>
</StackPanel>
</Border>
...
</PivotItem>
我认为PivotItem
具有非变量Width
意味着Grid
具有继承的具体Width
。