2012-04-03 8 views
0

リストビューのスクロールバーを "スクロールアップ"と "スクロールダウン"ボタンに置​​き換えています。私の質問は、リストボックスをスクロールすることができるときにだけボタンを表示する方法はありますか?WPFリストボックスのスクロールとボタンの表示

つまり、私のリストボックスには2つのアイテムしかない場合があります。その場合、スクロールするものがないため、ボタンを表示する必要はありません。

私はこれを複数のリストボックスにわたって含意しており、アイテム/リストボックスのサイズは設定されていません。私は、「scrollviewer_initializeed」なんかのようなものに巻き込むことができるイベントがあることを願っています。

+0

答えは、ScrollViewerの[ComputedVerticalScrollBarVisibility](http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.computedverticalscrollbarvisibility.aspx)を参照することと関連があるようです。プロパティ。 – Alain

答えて

0

これはあなたのボタンがButtonScrollUpとButtonScrollDownという名前であると仮定しています。

ScrollViewer.ScrollableHeightはビューから外れているアイテムの数と等しいので、0より大きい場合はボタンが表示されます。

+0

まさに私が探していたもの、ありがとう。 – AGoodDisplayName

0

最も簡単な解決策は、カスタムスタイルにScrollViewerのようになります:

単に「オート」に垂直スクロールバーの可視性を設定し、上部と下部の「RepeatButton」の部分を除いて、コントロールテンプレートのすべての部分を非表示にします。

enter image description here

ScrollViewerのスタイリングの例はhereですが、私はあなたがクイック検索でより良いものを見つけることができると確信しています。

<ListBox ScrollViewer.ScrollChanged="ListBox_ScrollChanged" 
     ScrollViewer.VerticalScrollBarVisibility="Hidden" /> 

そしてScrollChangedイベントを処理するために、このメソッドを追加します:

private void ListBox_ScrollChanged(object sender, ScrollChangedEventArgs e) 
{ 
    ButtonScrollUp.Visibility = ButtonScrollDown.Visibility = 
     ((ScrollViewer)e.OriginalSource).ScrollableHeight > 0 
      ? Visibility.Visible 
      : Visibility.Collapsed; 
} 

隠しと、このようなListBox.ScrollView.ScrollChangedイベントを処理するListBox.ScrollView.VerticalScrollBarVisibilityを設定

関連する問題