2015-09-25 82 views
0

在我的xaml中,我有一些由我製作的對象。我把它們排成一排,如果窗戶太少,我會換一個新的線。使用ItemsControl對象在WPF應用程序中動態滾動

問題是,當窗口很小,也在一個新的行中,元素不能全部顯示。解決方案很簡單:滾動條!但是,如果將Vertical/Horizo​​ntalScrollBarVisibility設置爲auto,則不會再轉到換行符。

這是我的XAML:

<ScrollViewer CanContentScroll="True" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" > 
    <ItemsControl Name="ItemGroups" ItemsSource="{Binding NotifyItemUI}" /> 
</ScrollViewer> 

,這是截圖什麼,我需要爲我的目標:

enter image description here

例如,如果我垂直調整我區,我有3行對象,這樣如果窗口變得太小,我看不到第三行。在這種情況下,我想看到一個垂直滾動條來滾動它。

水平相同的東西:如果我有一個單行的元素太多,我必須水平滾動它。

+1

您可以在容器控件上設置'MaxHeight'或'MaxWidth'屬性來限制每行顯示的元素的最大數量,或者可以刪除其中一個'Scrollbar'。 – Sheridan

回答

1

你所描述的看起來像一個WrapPanel,但你寫的方式表明它是一個自定義控件,所以我們看不到你的ItemsControl正在做什麼佈局。

但是,ScrollViewer可能會與Panel進行棘手的交互。如果Panel度量到無窮大,它將始終認爲自己足夠大,並且永遠不會告訴ScrollViewer它沒有空間。結果是ScrollViewer不知道需要滾動條。如果這是你的問題,那麼設置WidthHeight屬性或最大值爲@Sheridan表示,應該修復它。