【问题标题】:ScrollViewer scrollbar appears prematurelyScrollViewer 滚动条过早出现
【发布时间】:2017-02-17 01:54:19
【问题描述】:

我有一个 GridView,在 List 视图中包含三列。

<ListView  ScrollViewer.HorizontalScrollBarVisibility="Auto" >                    
  <ListView.View>
    <GridView>
        <GridViewColumn Width="100" />               
        <GridViewColumn Width="130" />               
        <GridViewColumn Width="130" />           
    </GridView>
  </ListView.View>
</ListView>

调整列大小时,水平滚动条会在任何内容消失之前出现。我只希望它在 GridView 中的某些内容不在视野范围内时显示。

示例照片:

为什么第一张截图有滚动条?只有当我调整“下一次运行”列的大小以使其右侧有那么大的边距时,它才会消失。

----

【问题讨论】:

    标签: c# wpf xaml gridview scrollview


    【解决方案1】:

    如果您将列表视图安装在与每行的总宽度完全相同的容器中,则它没有为垂直滚动条留下空间,并且 UI 总是在 WPF 中保留该空间,它会重叠内容,这就是最后一列可见的原因,以保留该空间

    【讨论】:

    • 这完全有道理,但不幸的是,禁用垂直滚动条似乎并没有改变任何东西。有什么建议吗?
    • 如果你不需要垂直滚动条,那为什么要使用列表视图呢?为什么不直接使用 gridview 并向其中添加行?
    • 我确实需要一个垂直滚动条;我只是观察到禁用它并不能解决我的问题:)
    • 对于我所看到的仅在 WPF 列表视图上发生的情况,在 WinForms 列表视图上,如果垂直滚动条不存在,则不需要额外的间隙,因此这可能是错误或设计决定始终保留该空间。更新了我的答案。
    【解决方案2】:

    不管滚动条出现这么快的原因是什么,我都能用下面的代码解决我的问题,该代码只有在内容不在视野范围内时才手动启用水平滚动条

     <ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled">
    

    并在 Window 的构造函数中触发它:

    //If the sum of all column widths > ListView width -> enable scrollbar.
    foreach (var column in gridView.Columns)
    {
      ((INotifyPropertyChanged)column).PropertyChanged += (sender, e) =>
      {
        if (e.PropertyName == "ActualWidth")
        {
          var totalColumnWidth = gridView.Columns.Sum(col => col.ActualWidth);
          var listViewWidth = listView.ActualWidth;
          if (totalColumnWidth > listViewWidth)
            listView.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);
          else
            listView.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Disabled);
        }
      };
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      相关资源
      最近更新 更多