WPF Grid Rows和ResizeGrip无法正确锚定

时间:2015-09-09 14:58:50

标签: c# wpf xaml

在与WPF斗争数小时之后,我需要你的帮助。

我已经阅读了很多不同的StackOverflows,但是,我似乎无法让我目前的情况有效,而且我不明白为什么。我选择使用网格与DockPanel形成对比,我也希望保持这种方式。根据我所读的行定义是可以的,模板网格的第二行应该自动拉伸。不幸的是它没有,因为似乎网格的最后一行不会移开。

这就是我的窗口当前的样子: enter image description here

如您所见,蓝色行不在窗口底部。事实上,窗口首先不应该那么长。

这是我的Generic.xaml文件的代码片段,与该问题相关。 它的工作方式是,我有一个带有自定义控件组的Skin:

<!-- Window START-->
<ControlTemplate x:Key="WindowTemplate" TargetType="{x:Type Window}">
    <Border BorderBrush="LightGray" BorderThickness="1" Background="Red" Padding="0" VerticalAlignment="Stretch">
        <Grid x:Name="WindowRoot" Margin="0" VerticalAlignment="Top" Background="Blue" MouseDown="Window_MouseDown">

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="25"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="75"/>
                <ColumnDefinition Width="25"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="40" />
                <RowDefinition Height="*" />
                <RowDefinition Height="25" />
            </Grid.RowDefinitions>

            <!-- HEADER START-->
            <Frame x:Name="header_background" Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="0" Background="#ddd" BorderThickness="0 0 0 1" BorderBrush="#c9c9c9"/>
            <Image x:Name="LogoICon" Source="/MTApp;component/Resources/Icon.png" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Left" Margin="10 8"/>                        
            <Label x:Name="windowTitle" Grid.ColumnSpan="2" Content="{TemplateBinding Title}" VerticalAlignment="Center" Foreground="#393939" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" FontFamily="Segoe UI Regular" FontSize="12"/>
            <Grid Grid.Column="2" Grid.ColumnSpan="2" Grid.Row="0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="35"/>
                    <ColumnDefinition Width="18"/>
                    <ColumnDefinition Width="19"/> 
                    <ColumnDefinition Width="18"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="10"/>
                    <RowDefinition Height="20" />
                    <RowDefinition Height="10" />
                </Grid.RowDefinitions>
                <Button x:Name="minimizeBtn" Content="0" FontFamily="Marlett" Foreground="#393939" Background="Transparent" BorderThickness="0" Grid.Row="1" Grid.Column="1" Margin="3 0 0 0" Click="minimizeBtn_Click"/>
                <Button x:Name="maximizeBtn" Content="2" FontFamily="Marlett" Foreground="#393939" Background="Transparent" BorderThickness="0" Grid.Row="1" Grid.Column="2" Margin="3 0 0 0" Click="maximizeBtn_Click"/>
                <Button x:Name="quitBtn"     Content="r" FontFamily="Marlett" Foreground="#393939" Background="Transparent" BorderThickness="0" Grid.Row="1" Grid.Column="3" Margin="3 0 0 0" Click="quitBtn_Click"/>
            </Grid>

            <!-- HEADER END-->
            <!-- CONTENT START-->
            <ContentPresenter Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="1"  Height="Auto"/>
            <!-- CONTENT END-->

            <!-- FOOTER START-->
            <Border x:Name="footer_background" Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="2" Height="25">
                <ResizeGrip />
            </Border>

            <!-- FOOTER END-->
        </Grid>
    </Border>
</ControlTemplate>
<!-- Window END-->

<Style x:Key="LightSkin_0_1" TargetType="Window">
    <Setter Property="WindowStyle" Value="None" />
    <Setter Property="AllowsTransparency" Value="True" />
    <Setter Property="ResizeMode" Value="CanResizeWithGrip" />
    <Setter Property="Template" Value="{StaticResource WindowTemplate}" />

    <Style.Triggers>
        <DataTrigger Binding="{Binding WindowState}" Value="Maximized">
        </DataTrigger>
    </Style.Triggers>
</Style>

我的MainWindow.xaml是:

<Window x:Class="UHashIt.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:UHashIt"
    mc:Ignorable="d"
    Title="Window title"
    WindowStartupLocation="CenterScreen"
    MinHeight="275"
    MinWidth="700"
    Width="700" 
    Style="{DynamicResource LightSkin_0_1}">
<Grid Background="White">
    <Grid.RowDefinitions>
        <RowDefinition Height="30" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <!-- Menu -->
    <Border VerticalAlignment="Top" Padding="5" Background="#f2f2f2" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" BorderThickness="0 0 0 1" BorderBrush="LightGray">
        <DockPanel >
            <Menu DockPanel.Dock="Left">
                <MenuItem Header="File">
                    <MenuItem Header="Add File" />
                    <MenuItem Header="Export.." />
                    <Separator />
                    <MenuItem Header="Close"/>
                </MenuItem>
                <MenuItem Header="Help">
                    <MenuItem Header="Online Documentation" />
                    <MenuItem Header="About"/>
                </MenuItem>
            </Menu>
        </DockPanel>
    </Border>
    <!-- Menu End -->

    <!-- Content -->
    <Grid Grid.Row="1"  VerticalAlignment="Stretch">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="25"/>
            <ColumnDefinition Width="150*"/>
            <ColumnDefinition Width="40"/>
            <ColumnDefinition Width="150*"/>
            <ColumnDefinition Width="25"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="30" />
            <RowDefinition Height="40" />
            <RowDefinition Height="30" />
            <RowDefinition Height="40" />
            <RowDefinition Height="50" />
        </Grid.RowDefinitions>
        <Label Style="{DynamicResource headline4}" Content="File 1" Grid.Row="0" Grid.Column="1"/>
        <TextBox Grid.Row="1" Style="{DynamicResource NormalTextBox}" Grid.Column="1"/>
        <Button Grid.Column="2" Grid.Row="1" Style="{DynamicResource CommonButton}" Height="30" Width="30" VerticalAlignment="Top"/>
        <Label Style="{DynamicResource headline5}" Grid.Row="1" Grid.Column="3"/>

        <Label Style="{DynamicResource headline4}" Content="File 2" Grid.Row="2" Grid.Column="1"/>
        <TextBox Grid.Row="3" Style="{DynamicResource NormalTextBox}" Grid.Column="1"/>
        <Button Grid.Column="2" Grid.Row="3" Style="{DynamicResource CommonButton}" Height="30" Width="30" VerticalAlignment="Top"/>
        <Label Style="{DynamicResource headline5}" Grid.Row="3" Grid.Column="3"/>


        <!-- Hash Button and Selection -->
        <ComboBox Grid.Row="4" Grid.Column="1" HorizontalAlignment="Left" Width="200" Height="30">
            <ComboBoxItem>
                Please Choose Your Algorithm
            </ComboBoxItem>
        </ComboBox>
        <Button Grid.Column="1" Grid.Row="4" Style="{DynamicResource ActionBtn}" Content="Button" HorizontalAlignment="Right"/>
        <!-- End-->

    </Grid>
    <!-- Content End-->
</Grid>

我无法解释为什么&#34;蓝条&#34;没有附在底部。尽管如此,窗户是如此之大。

1 个答案:

答案 0 :(得分:1)

我想你想改变这个:

 <Grid x:Name="WindowRoot" Margin="0" VerticalAlignment="Top" Background="Blue" MouseDown="Window_MouseDown">

到此:

     <Grid x:Name="WindowRoot" Margin="0" VerticalAlignment="Stretch" Background="Blue" MouseDown="Window_MouseDown">