C# WPF列表视图溢出
如何阻止我的listview控件溢出 添加项目时: listview应该在红色标记处停止。 预期结果: MainWindow.xaml是一个汉堡包菜单,左侧为菜单,右侧为views.accounts.xaml Views.Accounts.xaml: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>
<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内部
<!--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
。问题已解决。问题是父栅格的行高度设置为“自动”。