2017-02-17 21 views
0

リストビュー内に3列の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

垂直スクロールバーが必要ない場合、なぜリストビューを使用するのですか?グリッドビューを直接使用して行を追加してみませんか? – Gusman

+0

私は垂直スクロールバーが必要です。私はちょうど私の問題を解決していないという観測を行っていた:) –

関連する問題