C# WPF列表视图溢出

C# WPF列表视图溢出,c#,wpf,xaml,listview,C#,Wpf,Xaml,Listview,如何阻止我的listview控件溢出 添加项目时: listview应该在红色标记处停止。 预期结果: MainWindow.xaml是一个汉堡包菜单,左侧为菜单,右侧为views.accounts.xaml Views.Accounts.xaml: <UserControl> <Grid Background="White"> <!--Define 2 Rows--> <Grid.RowDefinitions>

如何阻止我的listview控件溢出

添加项目时:

listview应该在红色标记处停止。

预期结果:

MainWindow.xaml是一个汉堡包菜单,左侧为菜单,右侧为views.accounts.xaml

Views.Accounts.xaml:

    <UserControl>

<Grid Background="White">
    <!--Define 2 Rows-->
    <Grid.RowDefinitions>
        <RowDefinition Height="48"/>
        <RowDefinition/>
    </Grid.RowDefinitions>

<!--Header-->
<Border Grid.Row="0" Background="#FF444444"...>
<Grid Grid.Row="1" Margin="10">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="250"/>
        </Grid.ColumnDefinitions>

<!--Options-->
<StackPanel Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"...>

<!--Content area-->
<Grid Grid.Row="1" Grid.Column="0" Margin="0 20 0 0">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <ScrollViewer Grid.Row="0">
            <ListView Style="{StaticResource VirtualisedMetroListView}"
                      MinHeight="250" Name="accountsListView">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Username" DisplayMemberBinding="{Binding username}"/>
                        <GridViewColumn Header="Password" DisplayMemberBinding="{Binding password}"/>
                        <GridViewColumn Header="Email" DisplayMemberBinding="{Binding email}"/>
                        <GridViewColumn Header="Verified" DisplayMemberBinding="{Binding verified}"/>
                    </GridView>
                </ListView.View>
            </ListView>
                </ScrollViewer>
                <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
                <Button Content="Clear" Width="74" Click="clear_Click"/>
                <Button Margin="10 0 0 0" Content="Export" Width="74"/>
            </StackPanel>
            </Grid>
        </Grid>

<!--Settings-->
<Grid Grid.Row="1" Grid.Column="1" Margin="10 10 0 10">

</Grid>
</Grid>
</UserControl>

通常对于此类问题,没有什么原因:

  • ListView位于StackPanel内部
  • ListView位于自动高度网格行内
  • ListView位于ScrollViewer内部
解决此问题的最简单方法是移除StackPanel和ScrollViewer控件。ListView包含内置的ScrollViewer,因此您不必手动定义它

还要确保网格的行定义未设置为Height=“Auto”

例如:

<!--Content area-->
<Grid Grid.Row="1" Grid.Column="0" Margin="0 20 0 0">
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <ListView Style="{StaticResource VirtualisedMetroListView}" MinHeight="250" Name="accountsListView">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Username" DisplayMemberBinding="{Binding username}"/>
                <GridViewColumn Header="Password" DisplayMemberBinding="{Binding password}"/>
                <GridViewColumn Header="Email" DisplayMemberBinding="{Binding email}"/>
                <GridViewColumn Header="Verified" DisplayMemberBinding="{Binding verified}"/>
            </GridView>
        </ListView.View>
    </ListView>
    <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
        <Button Content="Clear" Width="74" Click="clear_Click"/>
        <Button Margin="10 0 0 0" Content="Export" Width="74"/>
    </StackPanel>
</Grid>


还要确保VirtualisedMetroListView样式不包含任何可能影响ScrollViewer的内容。

因为您没有提供好的答案,所以尝试编写实际答案是不实际的。但基于您共享的一点点信息,您的问题似乎在于,将
列表视图
嵌套在
堆栈面板
中(一个元素可以给其孩子们想要的空间…它只剪辑超出大小的部分),
ListView
无法知道它应该显示一个滚动条。不清楚您为什么在此处使用
StackPanel
。看起来网格中有两行会更好,第二行有
Height=Auto
@PeterDuniho我试着用两行网格代替stackpanel。它仍然不起作用。@PeterDuniho用更多的代码更新了我的问题。
StackPanel
是这里的问题。你能把它取下来吗?如果将
Listview
直接包装在网格中,您甚至不需要添加特定的
Scrollviewer
。问题已解决。问题是父栅格的行高度设置为“自动”。