【问题标题】:How to update DataGrid ScrollBar after DataGrid is resized调整 DataGrid 大小后如何更新 DataGrid ScrollBar
【发布时间】:2018-11-01 20:07:58
【问题描述】:

我在扩展器上方有一个DataGrid,每当我扩展Expander 时,ScrollBar 就会出现在DataGrid 中。然而,当我折叠Expander 时,DataGrid 的ScrollBar 不会消失,即使DataGrid 中没有足够的Items 来保证ScrollBar。

我留下了一个空的ScrollBar。

有没有办法更新DataGrid,以便可以重新执行ScrollBar 逻辑?

<DataGrid x:Name="MyDataGrid"/>
<Expander Collapsed="Expander_OnCollapsed"/>        

private void Expander_OnCollapsed(object sender, RoutedEventArgs e)
{
    MyDataGrid.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
}

【问题讨论】:

  • 您可以尝试使用VerticalScrollBarVisibility="Auto"。这在理论上应该可行。很难说没有代码可以使用
  • @Cubemaster 不幸的是我已经尝试过了,但它不起作用。
  • 该死,我的知识范围到此为止
  • 你可以为扩展器添加一个事件监听器,我很确定它有OnCollapsed 或类似的选项。然后只需在该方法中设置滚动条的可见性
  • 你能提供一些代码吗?看看 XAML 和背后的代码会很有帮助,所以我们可以看到你做错了什么(如果有的话)

标签: c# .net wpf xaml


【解决方案1】:

没有任何代码可以准确判断,但您可以尝试:

<DataGrid x:Name="MyDataGrid">
    <Expander Collapsed="Expander_OnCollapsed">
        <!--Your fancy super awesome code here-->
    </Expander>
</DataGrid>

然后在你的代码中:

private void Expander_OnCollapsed(object sender, RoutedEventArgs e)
    {
        MyDataGrid.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
    }

【讨论】:

  • 我在后面的代码中有一个方法,当展开器折叠时调用它,这就是我设置可见性的地方。到目前为止,我已经尝试将其设置为自动、禁用、隐藏,在数据网格上使用 UpdateLayout 并刷新数据网格的项目源,但都没有成功。我的代码看起来与您的示例非常相似。
猜你喜欢
  • 2011-11-20
  • 2011-10-13
  • 1970-01-01
  • 2011-05-23
  • 2011-08-14
  • 2011-03-05
  • 2011-11-18
  • 2011-10-20
  • 2011-04-21
相关资源
最近更新 更多