需要UI对齐帮助WPF

在我的WPF应用程序(下面发布的XAML)中,我有一个列表视图,下面我有一些标签和文本框。 ListView下面的所有内容都应该锚定到窗口的底部。 ListView上方的所有内容都需要锚定到窗口的顶部。 ListView本身需要垂直扩展以填充其间的空间。当我垂直调整窗口大小时,唯一应该改变大小的是列表视图。 我将所有内容保存在根目录的堆栈面板中,但它不会像我想要的那样调整listview的大小。谁知道我怎么能做到这一点?我正在使用C#.NET 4.0和VS2010。
<Window x:Class="TaskManager.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" MinWidth="525" MinHeight="400">
    <StackPanel Orientation="Vertical">
        <Menu Name="mainMenu" Margin="0,0,0,5">
            <MenuItem Header="File">
                <MenuItem Header="Quit" />
            </MenuItem>
        </Menu>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,0,5">
            <Label>View tasks for user:</Label>
            <ComboBox Name="userList" MinWidth="150"></ComboBox>
        </StackPanel>
        <ListView Name="taskView" VerticalContentAlignment="Stretch">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Task" Width="300"/>
                    <GridViewColumn Header="Hours" Width="50"/>
                </GridView>
            </ListView.View>
        </ListView>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="353*" />
                <ColumnDefinition Width="97*" />
                <ColumnDefinition Width="53" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Label Grid.Row="0" Grid.Column="0">Task Description</Label>
            <TextBox Grid.Row="1" Grid.Column="0"/>
            <Label Grid.Row="0" Grid.Column="1">Hours</Label>
            <TextBox Grid.Row="1" Grid.Column="1"/>
            <Button Grid.Row="1" Grid.Column="2">Add</Button>
        </Grid>
    </StackPanel>
</Window>
    
已邀请:
听起来DockPad会帮助您获得理想的结果。在DockPanel中,您可以将视图的部分停靠在窗口的顶部,底部,左侧或右侧。添加的最后一个元素总是覆盖窗口的其余部分。我修改了下面的StackPanel代码。
<DockPanel>
    <Menu DockPanel.Dock="Top" Name="mainMenu" Margin="0,0,0,5">
        <MenuItem Header="File">
            <MenuItem Header="Quit" />
        </MenuItem>
    </Menu>
    <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,0,5">
        <Label>View tasks for user:</Label>
        <ComboBox Name="userList" MinWidth="150"></ComboBox>
    </StackPanel>
    <Grid DockPanel.Dock="Bottom">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="353*" />
            <ColumnDefinition Width="97*" />
            <ColumnDefinition Width="53" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Label Grid.Row="0" Grid.Column="0">Task Description</Label>
        <TextBox Grid.Row="1" Grid.Column="0"/>
        <Label Grid.Row="0" Grid.Column="1">Hours</Label>
        <TextBox Grid.Row="1" Grid.Column="1"/>
        <Button Grid.Row="1" Grid.Column="2">Add</Button>
    </Grid>
    <ListView Name="taskView" VerticalContentAlignment="Stretch">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Task" Width="300"/>
                <GridViewColumn Header="Hours" Width="50"/>
            </GridView>
        </ListView.View>
    </ListView>
</DockPanel>
    
这可以使用具有4行定义的网格来完成。除了要展开的行之外,所有行的高度都应设置为“自动”,应将其设置为“*”
<Window x:Class="TaskManager.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" MinWidth="525" MinHeight="400">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Menu Grid.Row="0"  Name="mainMenu" Margin="0,0,0,5">
            <MenuItem Header="File">
                <MenuItem Header="Quit" />
            </MenuItem>
        </Menu>
        <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,0,5">
            <Label>View tasks for user:</Label>
            <ComboBox Name="userList" MinWidth="150"></ComboBox>
        </StackPanel>
        <ListView Grid.Row="2" Name="taskView" VerticalContentAlignment="Stretch">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Task" Width="300"/>
                    <GridViewColumn Header="Hours" Width="50"/>
                </GridView>
            </ListView.View>
        </ListView>
        <Grid Grid.Row="3">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="353*" />
                <ColumnDefinition Width="97*" />
                <ColumnDefinition Width="53" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Label Grid.Row="0" Grid.Column="0">Task Description</Label>
            <TextBox Grid.Row="1" Grid.Column="0"/>
            <Label Grid.Row="0" Grid.Column="1">Hours</Label>
            <TextBox Grid.Row="1" Grid.Column="1"/>
            <Button Grid.Row="1" Grid.Column="2">Add</Button>
        </Grid>
    </Grid>
</Window>
    

要回复问题请先登录注册