2012-01-09 10 views
0

私は、DockPanelを含んでいるScrollViewerを持っています。それはListBoxをその充満した要素として含んでいます。私が直面している問題は、ListBoxに多くの項目が含まれていて、ウィンドウの高さがスクロールバーが必要な位置に縮小されている場合です。DockPanel.Dock="Bottom"を押してScrollViewerのスクロールバーが表示されます。 のスクロールバーは決して表示されません。代わりに、ウィンドウの高さが小さくなると、ListBoxのスクロールバーが最初に表示されます。その後、ListBoxが指定された最小の高さに縮小された後、ScrollViewerのスクロールバーが残りの部分を処理するように見えるはずです。ListBoxスクロールバーがScrollViewerにあるときに表示させる方法を教えてください。

どうすればよいですか?

+0

を、私はこれをチェックする時間がありませんが、私はあなたがすべきだと思いますListBoxの最小高さを設定し、ListBoxの実際の高さをコンバータ付きのScrollViewerの実際の高さにバインドして、ScrollViewerのScrollBarが現れる前にListBoxの実際の高さを縮小させます。その後、ListBoxが最小の高さに収縮するときにのみ、ScrollViewerのScrollBarが有効になります。 うまくいきます。 – Seffix

+0

下記の私の答えを見てください。 – Seffix

答えて

1

おっと、それは私の質問はすでにここに回答されていると思われる: Nested Scroll Areas

1

ListViewのMinHeightプロパティを、ScrollViewerのスクロールバーを有効または有効にする特定の高さに設定する必要があります。 ListViewのHeightプロパティは、ScrollViewerのHeightプロパティにバインドする必要があります。次に、Windowの高さが、ListViewのリストの一部を隠す高さに縮小されると、ListViewのScrollBarが現れます。リストビューの高さがMinHeightに達すると、ScrollViewerのScrollBarが表示されます。

これは、XAMLコードです:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
      <DockPanel> 
       <ListView x:Name="listView1" DockPanel.Dock="Bottom" MinHeight="100" Height="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ScrollViewer, AncestorLevel=1}, Path=ActualHeight}"/> 
      </DockPanel> 
     </ScrollViewer> 
    </Grid> 
</Window> 
+0

残念ながら、私はこれを行うことはできません。これは、DockPanelとListViewがUserControlの一部であるため、ScrollViewer(UserControlを含む)を参照できないためです。しかし、たとえできても、これはうまくいくとは思わない。これは、リストビューがスクロールビューアと同じ高さになり、画面から他のコントロールをノックアウトするように見えます。 –

+0

まず、それは動作する、私はチェックした。 – Seffix

+0

第2に、コンバータを使用して高さを任意の値に調整できるため、他のコントロールに十分な余裕を残して正確な高さを計算できます。 – Seffix

関連する問題