web-dev-qa-db-ja.com

ListTemplateとItemTemplate(およびScrollBar!)

データバインドされ、アイテムテンプレート化されたListBoxがあります。

<ListBox x:Name="lbLista" 
         ScrollViewer.VerticalScrollBarVisibility="Visible">
    <ListBox.ItemTemplate>
      <DataTemplate>
        <StackPanel Orientation="Horizontal">
          <CheckBox IsChecked="{Binding Deleteable, Mode=TwoWay}" />
          <Label Content="{Binding Name}" />
        </StackPanel>
      </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Itesはうまく表示され、ObservableCollectionから取得されます。

problemscrollbarですが、これは表示されますが使用できません-つかむハンドルがありません。 ListBoxでScrollView添付プロパティを設定しようとしましたが、状況には影響しません。

33
Pompair

コードをテストプロジェクトに貼り付け、約20の項目を追加しました。使用可能なスクロールバーが問題なく表示され、期待どおりに機能します。いくつかの項目を追加するだけで(スクロールが不要になるなど)、使用可能なスクロールバーが表示されません。これは事実でしょうか?十分なアイテムを追加していないということですか?

ScrollViewer.VerticalScrollBarVisibility="Visible"を削除すると、スクロールバーは必要な場合にのみ表示されます。

31
Muad'Dib

ListBoxは、使用可能な高さで拡張しようとします。ListBoxのHeightプロパティを設定すると、実際に機能するスクロールビューアーが表示されます。

ListBoxで使用可能な高さを調整したい場合は、親コントロールからHeightを調整することをお勧めします。たとえば、グリッドでは、RowDefinitionでHeightをAutoに設定するとうまくいく場合があります...

HTH

9
Arcturus

スタックパネル(ScrollableContainerから派生したもの)内に配置されたスクロール可能なコンテンツで運がなかった-そのため、コンテナの境界を越えてクリップされてしまいますが、スクロールバーは表示されません。

スクロールバーのサイズが適切になるように、実行時のレイアウト操作中に既知の高さに解決できるコンテナ内に常にスクロール可能なコンテンツを配置する必要があります。ビジュアルツリー内の親コンテナは、実際の高さに解決できる必要があり、RowDefinition oの高さをautoまたはfixedに設定すると、グリッドでこれが発生します。

これはSilverlightでも発生します。

-em-

5
Etienne

答えを求めます。私も空のプロジェクトに挑戦しました-天国と七つの海の全能の創造者を見よ-それはうまくいきました。私はもともと、ルートの内部にあったリ​​ストボックスを内部に持っていました。なんらかの理由で、ListBoxはStackPanelの内部にいることをまったく好みません。 =)

-ポン-

0
Pompair