wpf堆栈面板

时间:2011-03-09 14:00:50

标签: wpf xaml stackpanel

简单的问题,我有一个带工具栏和列表框的堆栈面板,我希望列表框填充剩余的空间,但它不会。这就是我现在所拥有的。

<Window x:Class="TestClientMainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Testing client" Height="350" Width="525"
    DataContext="{StaticResource ResourceKey=TheViewModel}" Background="#FFD4BFBF">
<Grid>
    <StackPanel HorizontalAlignment="Stretch" Name="stackPanel1" VerticalAlignment="Stretch">
        <ToolBar Height="26" Name="toolBar1" />
        <ListBox Name="listBox1" VerticalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" MinHeight="{Binding ElementName=stackPanel1, Path=Height}" Height="99" />
    </StackPanel>
</Grid>

4 个答案:

答案 0 :(得分:3)

尝试使用DockPanel代替StackPanel。这样,您可以将LastChildFill设置为true,并且作为最后一个包含元素的ListBox将延伸以填充其剩余空间:

<DockPanel LastChildFill="True" HorizontalAlignment="Stretch" Name="dockPanel1" VerticalAlignment="Stretch">
    <ToolBar Height="26" Name="toolBar1" />
    <ListBox Name="listBox1" VerticalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" MinHeight="{Binding ElementName=stackPanel1, Path=Height}" Height="99" />
</DockPanel>

答案 1 :(得分:2)

尝试使用DockPanelToolBar停靠在顶部或底部,LastChildFill上的DockPanel属性设置为true

<DockPanel Name="dockPanel1" LastChildFill="True">
    <ToolBar Height="26" Name="toolBar1" DockPanel.Dock="Top"/>
    <ListBox Name="listBox1" MinHeight="{Binding ElementName=stackPanel1, Path=Height}" Height="99" />
</DockPanel>

答案 2 :(得分:1)

使用DockPanel而不是StackPanel并将LastChildFill属性设置为true。这应该可以解决问题。

答案 3 :(得分:0)

StackPanel不会轻易说服你做你想做的事。

我会改用网格。