2011-06-03 82 views
19

嗨,我有一個ListView綁定到集合。我將ListView的高度設置爲auto,以佔用區域中的所有空間。但是,我將高度設置爲自動後沒有滾動條。如果我給它一個高度,那麼滾動條會顯示出來。WPF ListView沒有滾動條如果高度設置爲自動

標記是很像以下

<Grid> 
    <StackPanel> 
     <Expander> 
      <DataGrid> 
     <Expander> 
      <ListView> 
+0

我有一種預感, 「?任何想法」這裏不是你真正的問題。 – BoltClock 2011-06-03 01:03:28

+0

裏面的ListView是什麼樣的容器/面板? – 2011-06-03 04:43:14

回答

43

我有一個預感,你的ListView是在一個面板,允許它無限制地垂直擴大。

如果您將ListView放在StackPanel的內部,例如,ListView的高度可能會超過StackPanel的高度。 ListView增加了它的高度來顯示它的所有項目,就它而言,因此沒有滾動條。

但是,如果更改StackPanelGrid,其中控制自動嘗試適合自己的那個區域裏面,ListView會自動有滾動條時,它包含了更多的項目比它可以顯示。

這可能會最簡單地通過調整包含ListView的佈局來解決。

+0

這正是我在這裏所得到的。使用標記示例更新了帖子。 – Eatdoku 2011-06-03 15:57:59

+0

我會問:2'Expanders'是StackPanel中唯一的東西嗎? 'StackPanel'是'Grid'中唯一的東西嗎?你希望'ListView'只佔用外部'Grid'中可用的空間嗎?如果所有這些都是*是*,則可以使用'DockPanel'而不是'StackPanel'。如果帶有ListView的'Expander'是最後一個孩子,它將填充剩餘的區域。 – 2011-06-03 17:18:36

+0

我已經用grid替換了stackpanel,問題解決了:) – Eatdoku 2011-06-05 06:16:42

3

爲什麼它應該顯示滾動條,如果有什麼滾動?

如果您想覆蓋任何默認行爲,您可以在ListBox上設置ScrollViewer.VerticalScrollBarVisibility="Visible"

6

而不是設置的

Height="Auto" 

集:

Height="1*" 
+0

恩,你的意思是指'Grid'的一個或多個* Row *的'Height'屬性? AFAIK中,所有提到的元素中,Grid的* Row *是唯一一個Height屬性接受*符號的元素。 – Tom 2017-08-23 23:11:47