[英]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.