XAML - 获取ListView以使用网格单元格的全高

时间:2015-07-15 01:17:40

标签: c# xaml

我在XAML中创建了一个带有2列和3行的网格,其中每一行的最后一行应该是其余部分的两倍:

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="2*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="2*"/>
        </Grid.RowDefinitions>

然后我将包含ListView的ScrollViewer添加到网格中,位于最大的单元格中:

        <ScrollViewer Grid.Row="2" Grid.Column="1">
             <ListView x:Name="OutputListView" >
                    <ListView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel/>
                        </ItemsPanelTemplate>
                    </ListView.ItemsPanel>
                </ListView>
            </ScrollViewer>
</Grid>

ListView正确显示项目,但尽管它位于大单元格中,但它只有一个小单元格的高度,因此不会填满整个单元格(令人惊讶的是,宽度与单元格大小相匹配)。

如果我在单元格中放置一个TextBox,它会完全填充它,所以我的网格似乎没问题。

任何想法,我如何让ListView使用单元格的整个高度?

编辑: taekahn的评论是正确的提示。这是我的工作版本:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="2*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="2*"/>
    </Grid.RowDefinitions>
    <ListView x:Name="OutputListView" ScrollViewer.VerticalScrollMode="Enabled" ScrollViewer.VerticalScrollBarVisibility="Visible">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>
</Grid>

1 个答案:

答案 0 :(得分:1)

运行代码时,ScrollViewerListView会占用我机器上的整个单元格。 我在发布时代码并排,并将其他单元格的背景颜色进行比较。

results