【问题标题】:Silverlight adjust DataGrid height at run timeSilverlight 在运行时调整 DataGrid 高度
【发布时间】:2010-09-20 11:58:46
【问题描述】:

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

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

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

            }
            ...
        }

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

【问题讨论】:

    标签: silverlight datagrid runtime height


    【解决方案1】:

    还将数据网格的高度属性设置为 MaxHeight(如果它们超过了当前的 MaxHeight)。如果 MaxHeight 已经超过它,它将不会重新检查它。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      • 2011-02-10
      • 1970-01-01
      • 2017-03-11
      相关资源
      最近更新 更多