Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ScrollViewer滚动条过早出现_C#_Wpf_Xaml_Gridview_Scrollview - Fatal编程技术网

C# ScrollViewer滚动条过早出现

C# ScrollViewer滚动条过早出现,c#,wpf,xaml,gridview,scrollview,C#,Wpf,Xaml,Gridview,Scrollview,我有一个GridView,列表视图中有三列 <ListView ScrollViewer.HorizontalScrollBarVisibility="Auto" > <ListView.View> <GridView> <GridViewColumn Width="100" /> <GridViewColumn Width="

我有一个GridView,列表视图中有三列

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

调整列的大小时,水平滚动条会出现在任何内容消失之前。我只希望它在GridView中的某些内容无法查看时出现

示例照片:

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


----

如果将listview安装在与每行总宽度大小完全相同的容器中,则垂直滚动条没有空间,UI始终在WPF中保留该空间,它将与内容重叠,这就是最后一列可见的原因,无论滚动条出现得如此之快的原因是什么,为了保留该空间,我能够使用以下代码解决我的问题,该代码仅在内容不可见时手动启用水平滚动条


这完全有道理,但不幸的是,禁用垂直滚动条似乎并没有改变任何事情。有什么建议吗?如果您不需要垂直滚动条,那么为什么要使用listview?为什么不直接使用gridview并向其中添加行呢?我确实需要一个垂直滚动条;我只是观察到,禁用它并不能解决我的问题:)因为我看到,只有在WPF listview上才会发生,在WinForms listview上,如果垂直滚动条不存在,则不需要额外的间隙,因此这可能是一个bug或一个design决策来始终保留该空间。更新了我的答案。
 <ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled">
//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);
    }
  };
}