2017-02-17 82 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

我確實需要一個垂直滾動條;我只是使觀察,禁用它沒有解決我的問題:) –