Silverlight在运行时调整DataGrid高度

时间:2010-09-20 11:58:46

标签: silverlight datagrid runtime height

我有一个5行的网格。在第2行和第4行,我有一个DataGrid。其他行具有固定的高度。 DataGrids中表格的内容当然是动态确定的,因此它们的高度也是如此。在我的特定应用程序中,两个表的高度之间存在关系,我想在运行时调整两者的MaxHeight。如果一个表比最初设定的MaxHeight长,那么它应该得到一个ScrollBar。但是两个表的高度都不应该长于浏览器的页面。

现在我尝试在某些事件触发的运行时执行此操作:

        if (availableSpace - heightOfTable1 - heightOfTable2 < 0)
        {
            if (heightOfTable1 > heightOfTable2)
            {
                Table1.MaxHeight = availableSpace - heightOfTable2;
                // Trigger a rerendering
                Table1.ItemsSource = null;
                Table1.ItemsSource = List1;
                ...

            }
            ...
        }

但是我发现当我这样做时,ActualHeight没有改变。 现在,ActualHeight在运行时大于指定的MaxHeight 我做错了什么?

1 个答案:

答案 0 :(得分:0)

还将datagrid Height属性设置为MaxHeight(如果它们超过了当前的MaxHeight)。如果已超过MaxHeight更改,它将不会重新检查。

您不需要触发重新渲染...您是否考虑过在代码中更改网格行的行高和最大行高而不是datagrids?当我操纵行高而不是内容高度时,事情似乎运行得更顺畅。在您的示例中也很有意义,因为您基本上是在计算基础上分配剩余的行高(第2行和第4行)。更改数据网格大小似乎是错误的。

只需用x:Name =“Row2”等命名单个行,就像任何其他元素一样。我实际上使用网格行高度的数据绑定来计算双重属性(因为我正在使用MVVM),但代码隐藏似乎是你的例子。