2012-03-07 11 views
1

リストボックスのようにスクロールしてスクロールできるように、1つのスクロールバーを別のスクロールバーに重ねて配置することは可能ですか? ありがとうございます。2つのリストボックスを1つのスクロールバーで並べ替える

+0

リストボックスを1つしか使用できない理由はありますか? –

+0

リストボックスは互いの上に置かれるか..? –

+1

「互いの上に」Y方向またはZ方向にありますか? –

答えて

1

あなたの質問は私には非常に明確ではないが、私はあなたがこのようなものを使用できると信じて:

<ScrollViewer Height="50"> 
    <StackPanel> 
     <ListBox> 
      <ListBoxItem Content="00 -Item0"/> 
      <ListBoxItem Content="00 -Item1"/> 
      <ListBoxItem Content="00 -Item2"/> 
     </ListBox> 
     <ListBox> 
      <ListBoxItem Content="01 -Item0"/> 
      <ListBoxItem Content="01 -Item1"/> 
      <ListBoxItem Content="01 -Item2"/> 
     </ListBox> 
    </StackPanel> 
</ScrollViewer> 
+0

スクロールビューアの高さをハードコードする必要がありますか? – Girirsh

+0

いいえ...それはサンプルだけです – DmitryG

+0

しかし、リストボックスのいくつかの項目でこれを試してください... –

1

スクロールバーを持たないようにスクロールして、両方を自動サイズ設定できます。

次に、その容器をScrollViewerに配置します。

AutoSize/Noスクロールバーが標準のListBoxのオプションである場合、100%確実ではありませんが、代わりにItemsPanelを使用できるはずです。

0

次のコード例は役立つはず、私はあなたの意図を理解していれば。

UIHelpers.FindVisualChild(...)の使用に注意してください。このメソッドのコードは、 "wpf FindVisualChild"を検索することによってオンラインで見つけることができます。 垂直オフセット(e.NewValue * 10)の計算もうまくいくようですが、10の値は2つのテストから導かれました。 より良い価値を計算したり、より良い方法でそれを導き出すことができます。

<Grid > 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="0"> 
     <ListBox Name="ListBox1" Height="50" Width="100" ScrollViewer.VerticalScrollBarVisibility="Hidden"> 
      <ListBoxItem Content="Item0"/> 
      <ListBoxItem Content="Item1"/> 
      <ListBoxItem Content="Item2"/> 
      <ListBoxItem Content="Item3"/> 
      <ListBoxItem Content="Item4"/> 
      <ListBoxItem Content="Item5"/> 
      <ListBoxItem Content="Item6"/> 
      <ListBoxItem Content="Item7"/> 
      <ListBoxItem Content="Item8"/> 
      <ListBoxItem Content="Item9"/> 
     </ListBox> 
     <ListBox Name="ListBox2" Height="50" Width="100" ScrollViewer.VerticalScrollBarVisibility="Hidden"> 
      <ListBoxItem Content="Item0"/> 
      <ListBoxItem Content="Item1"/> 
      <ListBoxItem Content="Item2"/> 
      <ListBoxItem Content="Item3"/> 
      <ListBoxItem Content="Item4"/> 
      <ListBoxItem Content="Item5"/> 
      <ListBoxItem Content="Item6"/> 
      <ListBoxItem Content="Item7"/> 
      <ListBoxItem Content="Item8"/> 
      <ListBoxItem Content="Item9"/> 
     </ListBox> 
    </StackPanel> 
    <ScrollBar Scroll="HandleScollChangeScrollBar" Height="100" Grid.Row="0" Grid.Column="1"/> 
</Grid> 

private void HandleScollChangeScrollBar(object sender, System.Windows.Controls.Primitives.ScrollEventArgs e) 
{ 
    ScrollViewer scrollViewer1 = UIHelpers.FindVisualChild<ScrollViewer>(ListBox2); 
    scrollViewer1.ScrollToVerticalOffset(e.NewValue * 10); 

    ScrollViewer scrollViewer2 = UIHelpers.FindVisualChild<ScrollViewer>(ListBox1); 
    scrollViewer2.ScrollToVerticalOffset(e.NewValue * 10); 
} 
0

トップリストボックスにScrollViewer.CanContentScroll = "False"を設定すると思いますが、私はこの正確な問題を抱えていました。

関連する問題