簡體   English   中英

ScrollViewer滾動條過早出現

[英]ScrollViewer scrollbar appears prematurely

我有一個GridView,其中List視圖內有三列。

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

調整列大小時,水平滾動條會在任何內容消失之前出現。 我只希望它在GridView中的某些內容不可見的情況下顯示。

示例照片:

為什么第一個屏幕截圖具有滾動條? 僅當我調整“下一次運行”列的大小以在其右邊具有較大的空白時,它才會消失。

為什么滾動條出現在這里 ---- 但沒有出現在這里?

如果您將列表視圖安裝在與每行總寬度完全相同的容器內,則它的垂直滾動條沒有剩余空間,並且UI始終在WPF中保留該空間,它將與內容重疊,這就是為什么最后一列可見,以保留該空間的原因

無論滾動條這么快出現的原因為何,我都可以使用以下代碼解決問題,該代碼僅在內容不可見時才手動啟用水平滾動條。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM