3

我有 2 个我遇到问题的数据网格。一旦将数据填充到其中,高度就会变得完全疯狂。

我得到了以下示例格式:

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <!-- some control on row 0 -->

    <Grid Grid.Row="1" HorizontalAlignment="Stretch"  Margin="0,2,0,0">
        <Grid.RowDefinitions>
            <RowDefinition Height="0.66*"/>
            <RowDefinition Height="0.33*" />
        </Grid.RowDefinitions>

        <DataGrid Name="grdSeacrhData" Grid.Row="0" />

        <DataGrid Name="grdSelectData" Grid.Row="1" />
    </Grid>
</Grid>

所以主网格行的大小是因为第一行还有一堆未知高度的控件,是最重要的部分。

第二行目标是首先显示 2 个数据网格稍大以显示上面的结果,第二个较小的数据网格用于从第一个选择中的一个或多个选择的精炼结果。

如果我不碰任何东西并打开表格,它就会很好地工作。但是,一旦第一个数据网格“grdSeacrhData”以 200-300 条记录的顺序显示在内部的数据,高度就会被拉伸到窗口大小之外。

我尝试了垂直对齐和垂直内容对齐,将垂直滚动设置为可见、自动,还尝试放入堆栈面板、停靠面板、画布、滚动查看器......

我没主意了。我所知道的是,如果我设置了数据网格的高度或最大高度,那么它就可以工作。如果未设置,有没有办法防止数据网格项目拉伸数据网格高度?

编辑#1:

好的,我已经尝试过使用 WPF 进行其他操作以查看结果,但它也无法正常工作。这里有一些细节:

我制作了 1 个网格,第一行高度为 3 行或第二行高度为 100,自动第三行高度为 100

我在中间行放了一个数据网格,它工作得很好。现在,只要我在其中添加数据,它就会离开屏幕。

没有数据网格中的数据我拉伸窗口,它是完美的第一行也停留在底部 100 和中间只是调整自己。

现在这里是我在 Winforms 中尝试过的

左右放置一个数据网格锚定的顶部底部。最高值 = 100 最低值 = form.height - 100

现在拉伸它完美工作的形式。我添加了相同的 xml 数据并且格式保持不变

所以我要做的不仅仅是一些“神奇的独角兽想法”,它实际上很容易在winforms中实现,但我不想使用我想留在WPF中的winforms。那么如何复制呢?

对于踢,我刚刚测试了 ASP.Net 数据网格,它的行为就像 winform 测试,所以绝对是可能的。

4

2 回答 2

0

您可以使用MaxHeight。它将设置元素可能具有的最大高度。

<DataGrid Name="grdSelectData" Grid.Row="1" MaxHeight="400" />

所以,如果你有更少的数据,它会更小。在您添加更多数据时,它将调整大小直到达到MaxHeight.

.

于 2013-09-25T16:21:13.640 回答
0

用 winform 用户控件替换所有内容,因为它具有更好的布局设置。曾尝试使用浏览器对象和 HTML,但填充数据存在一些问题,所以最后选择了 winforms

于 2013-10-23T17:58:51.933 回答