2011-06-03 9 views
19

こんにちは、私はコレクションにバインドするListViewを持っています。私はそれが領域内のすべてのスペースを占めるために、ListViewの高さをautoに設定します。しかし、私は高さをautoに設定した後にスクロールバーはありません。私はそれに高さを与えると、スクロールバーが表示されます。WPF ListViewは高さが自動に設定されている場合はスクロールバーなし

マークアップはかなり次

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

私は直感を持っている "?任意の考え"あなたの実際の質問ではありません。 – BoltClock

+0

内部の 'ListView'はどのようなコンテナ/パネルですか? –

答えて

43

私はあなたのListViewが制限なしで垂直方向に拡張できるパネル内にあることを鋭敏にしています。あなたはStackPanelListViewを置く場合

は、例えば、ListViewの高さがStackPanelの高さを超えることができます。 ListViewは、すべての項目を表示するために高さが上がっています。ただし、スクロールバーはありません。しかし

、あなたはStackPanelコントロールが自動的にその領域内に自分自身を合わせてみてくださいGridにそれが表示できるよりも多くの項目が含まれている場合、ListViewが自動的にスクロールバーを持っていることを変更した場合。

これはおそらく、ListViewを含むレイアウトを調整することで最も簡単に解決されます。代わりに、設定の

+0

これはまさに私がここにいるものです。マークアップサンプルでポストを更新しました。 – Eatdoku

+0

私は質問します: 'Expanders'は' StackPanel'の唯一のものですか? 'StackPanel'は' Grid'の唯一のものですか? 'ListView'が外側の' Grid'で利用できるだけのスペースを占めるようにしますか?これらすべてが* yes *の場合、 'StackPanel'の代わりに' DockPanel'を使うことができます。 'ListView'を持つ' Expander'が最後の子なら、それは残りの領域を埋めるでしょう。 –

+0

私はスタックパネルをグリッドに置き換えました。問題は解決しました:) – Eatdoku

3

スクロールするものがない場合は、なぜそれがスクロールバーが表示されるはずのようなものですか?

デフォルトの動作を無効にする場合は、ListBoxにScrollViewer.VerticalScrollBarVisibility="Visible"を設定します。

6

Height="Auto" 

セット:

Height="1*" 
+0

ええと、 'Grid'の*' Row' *の1つ以上に 'Height'プロパティを参照することを意味しましたか? AFAIK、言及されたすべての要素のうち、 'Grid'要素の' Row' *は 'Height'プロパティが" * "表記を受け入れる唯一の要素です。 – Tom

関連する問題