2017-02-17 45 views
0

我有一个列表视图内有三列的GridView。ScrollViewer滚动条过早出现

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

调整列的大小时,水平滚动条出现在任何内容不可见之前。我只希望它在GridView中的某些内容不在视图中时出现。

示例图片:

为什么第一个屏幕截图有滚动条?它只会消失,如果我调整“下一次运行”列的右边有大的边距。

Why does the scrollbar appear here ---- but not appear here?

回答

0

无论滚动条出现如此之快的原因,我能够解决我的问题以下代码仅在内容不在视图中时手动启用水平滚动条

<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); 
    } 
    }; 
} 
1

如果你安装一个容器,它是完全大小每行的总宽度相同的内部列表视图那么它就没有离开垂直滚动条的空间, UI始终保留WPF中的空间,它将与内容重叠,这就是为什么最后一列是可见的,为了保留该空间

+0

这非常有意义,但不幸的是禁用垂直滚动条似乎并没有改变任何东西。有什么建议么? –

+0

如果你不需要垂直滚动条,那么为什么要使用listview?为什么不直接使用gridview并向它添加行? – Gusman

+0

我确实需要一个垂直滚动条;我只是使观察,禁用它没有解决我的问题:) –