XAML 如何在WPF中使ListView拉伸以填充列的高度?

t5fffqht  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(233)

我有一个ListView控件。我想让它拉伸以填充一列的整个长度。为了实现这一点,我将ColumnDefinition设置为"*"。我将ListViewVerticalAlignment属性设置为Stretch,既针对ListView,也针对其包含元素。
目前,ListView只有在内部显示数据时才会增加大小。
如何使ListView拉伸到列的大小,而不管其中显示的是什么数据?
下面是我的XAML文件的示例版本。它显示VerticalAllignment被设置为在ListView和所有包含元素上拉伸:

<Grid>
    <TabControl>
        <TabItem Header="Main" 
                    Margin="1,-1,-2,1">
            <Grid Background="#FFE5E5E5" >

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

                <Border BorderBrush="Black" 
                        BorderThickness=".5" 
                        Padding="4"
                        Grid.Column="0"
                        VerticalAlignment="Stretch"
                        HorizontalAlignment="Stretch">

                    <StackPanel Orientation="Vertical" 
                                VerticalAlignment="Stretch" 
                                HorizontalAlignment="Stretch" >

                        <ListView x:Name="FilesDisplayed"  
                                    ItemsSource="{Binding AllFilePaths}" 
                                    SelectionChanged="FilesDisplayed_SelectionChanged" 
                                    HorizontalAlignment="Stretch"
                                    VerticalAlignment="Stretch"
                                    ScrollViewer.HorizontalScrollBarVisibility="Visible"
                                    ScrollViewer.VerticalScrollBarVisibility="Visible"/>
wvyml7n5

wvyml7n51#

当你想让内部元素填充外部空间时,避免使用StackPanel。将其替换为Grid,并使用Grid.ColumnDefinitionsGrid.RowDefinitions来调整位置。

相关问题