Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 行设置为的栅格布局*_Wpf_Wpf Controls - Fatal编程技术网

Wpf 行设置为的栅格布局*

Wpf 行设置为的栅格布局*,wpf,wpf-controls,Wpf,Wpf Controls,我有这样的布局: <Grid> <Grid.RowDefinitions> <RowDefinition Height="80" /> <!--Row 1--> <RowDefinition Height="*" /> <!--Row 2--> <RowDefinition Height="auto" /> <!--Row 3--> </Grid.RowDefin

我有这样的布局:

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="80" /> <!--Row 1-->
    <RowDefinition Height="*" /> <!--Row 2-->
    <RowDefinition Height="auto" /> <!--Row 3-->
  </Grid.RowDefinitions>
</Grid>

第2行必须是可伸缩的,因此我们必须将其高度设置为

问题是,我们不想让第三排停留在底部。换句话说,我们希望第2行初始化为所需的高度

当前(第2行底部有许多未分配的空间):

希望:

有什么简单的方法可以做到这一点吗?

试试看

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="80" /> <!--Row 1-->
        <RowDefinition Height="*" /> <!--Row 2-->
        <RowDefinition Height="Auto" /> <!--Row 3-->            
     </Grid.RowDefinitions>

     <ContentControl Grid.Row="2" VerticalAlignment="Top"></ContentControl>
</Grid>

您必须为第3行的内容设置VerticalAlignment=“Top”。


<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="80" />
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    ...
</Grid>
...
您需要为窗口设置最小高度,或使用scrollviewer为第2行设置最大高度,否则第2行可能会将第3行推离视图。下面是一个示例,展示了如何利用:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="480">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="80" />
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Border Grid.Row="0" Background="Aquamarine">
            <TextBlock>Page Header Stuff</TextBlock>
        </Border>
        <Border Grid.Row="1" Background="DarkKhaki">
            <TextBlock TextTrimming="None" TextWrapping="Wrap">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.
            </TextBlock>
        </Border>
        <Border Grid.Row="2" Background="DarkCyan">
            <TextBlock>Row 3</TextBlock>
        </Border>
        <Border Grid.Row="3" Background="DarkGray"/>
    </Grid>
</Window>

页眉材料
Lorem ipsum dolor sit amet,是一位杰出的献身者。不要用钻石。他坐在阿梅特·伊普苏姆·莫里斯旁边。这是一个非常重要的问题。Donec et mollis dolor。自由主义者的权利和义务是绝对的。我是天生的,但我是一个天才。不可自由使用的arcu车辆属于非侵权人。Lorem ipsum dolor sit amet,是一位杰出的献身者。埃尼安和孕妇罗琳。这是一只猫头鹰,枕着一个半圆形的脑袋,一只可爱的猫头鹰。佩伦茨克拍卖人nisi id magna consequat sagittis。这是一位杰出的法雷特拉·蒂奇登·菲吉亚·尼斯勒(feugiat nisl)的饮食专家。我们在乌尔纳乌尔特里塞斯accumsan的自由。多内克·塞德·奥迪奥·厄罗斯。在马莱苏亚达拱门广场上,我的生活充满了欢乐。在自然社会中,因怀孕而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯。在吴茱萸中。东部sem facilisis semper ac的Mauris vitae nisi。
第3排

事实上,我自己找到了准确的解决方案,但还是要感谢@Maverik@Nitesh@Vanlalhriata等等,你们帮了我很多

我将面板包装在网格外,并将其
高度设置为
自动
,将
垂直对齐设置为
顶部

这是我的完整演示解决方案,希望能有所帮助:

<!--wrapper a new panel, set its property-->
<Grid Height="auto" VerticalAlignment="Top">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="80" />
            <RowDefinition Height="*" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0"
                    Background="Red"
                    Text="Row 1" />
        <TextBlock TextWrapping="Wrap" Grid.Row="1" Background="Gray">Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!</TextBlock>
        <TextBlock Grid.Row="2"
                    Background="Navy"
                    Text="Row 3" />
    </Grid>
</Grid>

你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!你好,世界!

这符合我的所有要求,类似于Microsoft Word 2013起始页。

因此,请再添加一行,并将其留空。就这么简单。您是否尝试过将第2行的
高度设置为
自动
?还是会的scale@Nitesh哪里是空白行?请检查答案。我可能错了,但是我认为他想要第二行在Auto上,最后应该在*上,因为它是填充器。我宁愿不这样做。如果我有一个新的空行的高度百分比,如第2行
height=“0.6*”
和第4行
height=“0.4*”
,我会添加一个新的空行。如果我必须按照你的答案来做,我会在
网格
margin=“0 0 0 80”
)上给出一个80的底部边距。没错,我从他的例子中取了80的值来说明如何做到这一点,并假设他可以按照要求对静态值或百分比做同样的事情。这样,即使在应该的时候,它也不会崩溃(因为第2行占用了所有可用空间)。他实际上并不想将空间保留在底部,只是不希望第三行位于底部(如果不需要)。我们希望实现与word 2013一样的效果。在起始页,最近的部分是第2行,打开其他项目,上面的拆分器是第3行。如果我们将窗口高度值调整为较低,则第2行高度将同时发生变化e、 但是第3行总是在第2行下,并且是可见的。而且,第3行下没有更多的空间。总之,我们与word 2013的效果相同。如果这是OP想要的行为,为什么还要首先选择网格,而不是只使用
堆栈面板
?第1行的
边框
可以将其高度设置为80,我们可以去掉Bord第4位操作员。我在聊天中建议使用Dockpanel+StackPanel组合,但没有得到回应,所以我只是发布了网格解决方案。OP实际上解决了这个问题,根据我上次在wpf房间与他聊天时的情况,将第3排切换到80高,将第2排切换到自动。