我将DockPanel与ListView和StackPanel一起使用:
<DockPanel Margin="5" LastChildFill="True">
<ListView Margin="5" ItemsSource="{Binding Source={StaticResource taxGroupSource}}" DockPanel.Dock="Top" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalAlignment="Stretch">
<ListView.View>
<GridView>
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding SerialNumber}" />
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding Name}" />
</GridView>
</ListView.View>
</ListView>
<StackPanel DockPanel.Dock="Bottom" Style="{StaticResource buttonPanel}">
<Button Content="Close" Click="CloseClick"/>
</StackPanel>
</DockPanel>当GridView的行数很大时,ListView会覆盖底层的StackPanel。为什么?
发布于 2011-11-04 14:03:08
我认为问题出在DockPanel上的LastChildFill本身。正如MSDN所解释的,LastChildFill使得StackPanel占用DockPanel中的剩余空间,即使您已将其设置为停靠在底部。尝试删除该属性,看看这是否有帮助。
编辑:单独删除属性并不能做到这一点。我通过交换ListView和StackPanel获得了预期的行为,但这改变了Tab键顺序(尽管这里只在两个项之间,所以将焦点设置为ListView会使其看起来正确)。
或者,您是否可以使用包含两行的网格--第一行的ListView高度为"*“,第二行的StackPanel高度为"Auto"?或者这是一个更复杂的布局的简化,在那里这是不起作用的?
发布于 2011-11-04 14:12:46
正如@DocMax所说的,只有在所有先前的孩子都被占用后,停靠面板中有一些可用的空间,最后一个孩子填充才会起作用。对于具有大量行的ListView,空间已经被它占用,因此堆栈面板没有空间可供占用。
我建议你给堆叠面板提供一些MinHeight。
发布于 2012-06-02 00:26:30
如果你不想使用网格,那么你可以先添加StackPanel,然后使用LastChildFill="True"添加ListView来解决它。
https://stackoverflow.com/questions/8005414
复制相似问题