【问题标题】:WPF DataGrid with a DataGrid in RowDetailsTemplate doesn't get verticall scrollbarWPF DataGrid 与 RowDetailsTemplate 中的 DataGrid 没有垂直滚动条
【发布时间】:2012-12-05 13:45:09
【问题描述】:

我有一个带有 RowDetailsTemplate 的 DataGrid,其中包含一个 DataGrid。 父网格放置在它自己的行中。 该行定义为

<RowDefinition Height="*" />

通常这意味着该行将采用可用高度的 REST 并初始化它。但是,如果 DataGrid 对于屏幕上剩余的空间来说太大,则 DataGird 的按钮会显示在“屏幕下方”而不是滚动条。

我试图通过为父网格定义 MaxHeight=400 来解决这个问题,但即便如此,父网格的长度是无限的,并且仍然会变得如此之长以至于它的底部是不可见的。

有什么想法吗?

【问题讨论】:

  • 你在这句话中指的是哪个网格:>父网格放置在它自己的行中。
  • 也许您添加了一些代码,创建了一个可以发布的示例?

标签: wpf datagrid scrollbar rowdetailstemplate


【解决方案1】:

我认为你不应该使用StackPanel。如果OrientationVertical,它的高度会增长到无穷大。也许你应该使用另一个面板。

另见此链接:ScrollViewer not scrolling in WPF

【讨论】:

  • 感谢您的回答。我用网格替换了 Stackpanel(所以 stackpanel 中的所有内容都在彼此之上,只是为了看看它是否可以解决问题),不幸的是我得到了完全相同的不良行为,所以这并不能解决问题。跨度>
  • 我最初的问题是关于一个带有 stackpanel init 的网格,但我拿走了所有东西,只在数据网格中留下了一个数据网格,仍然有同样的问题,所以我把问题改成了那个。跨度>
  • @Keren,我提出了您的问题,也许其他人可以帮助您。但我建议写更多细节。其实有点不清楚。
  • 当我在这里测试时,我越来越接近它的底部。我现在发现的是,即使我写了“MaxHeight = 400”,网格仍然会忽略它并且只要它想要的长度(如在 auto 中),这意味着它的下部是不可见的。
【解决方案2】:

将 MaxHight 设置为父网格对网格的高度没有任何影响。 另一方面,将 MaxHight 设置为内部网格确实有效。

因此我这样解决: 首先,我把我的行命名为“rowGridRow”。

比我订阅内部网格的 Loaded 事件并这样做:

    private void dgGroupMedlem_Loaded(object sender, RoutedEventArgs e)
    {
        DataGrid dgGroupMedlem = sender as DataGrid;
        dgGroupMedlem.MaxHeight = rowGridRow.ActualHeight - xxx;
    }

xxx 是一些补偿周围其他事物(如标题)的值,并且可能应该根据父网格的行数来计算。

【讨论】:

    猜你喜欢
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2021-04-05
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 2014-12-06
    相关资源
    最近更新 更多