使ListView.ItemTemplate中网格的宽度与ListViewItem相同

8

我想做的是在ItemTemplate中创建一个Grid,使其扩展到ListViewItem的宽度,而不仅仅是所需空间。这就是我不想要的效果:

enter image description here

基本上,我想让红色的网格成为蓝色矩形(选定项)的宽度。这是我的XAML:

<ListView ItemsSource="{Binding}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Background="Red">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding FirstName}" />
                <TextBlock Grid.Column="1" Text="{Binding LastName}" />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

感谢您的提前帮助!

7
注:戴维·吉尔摩和柯克·哈米特的姓拼写有误。我很惊讶这段代码甚至能编译成功。 ;) - Dan J
1个回答

30

请按照以下步骤进行:

<ListView ItemsSource="{Binding}">
  <ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
  </ListView.ItemContainerStyle>

  ..

不错!这是一个非常巧妙的小技巧,效果很好。谢谢啊! - Carlo
我必须等待10分钟才能接受答案,会密切关注。谢谢! - Carlo
太棒了!谢谢你。它为我节省了时间 :) - Greg Ellis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接