是否可以为两个列表框设置一个滚动条,一个放在另一个列表框之上,以便它们像一个列表框一样平滑滚动。 在此先感谢:)
答案 0 :(得分:1)
您可以将它们叠加在一起,并使它们都自动调整大小,以便它们都没有滚动条。
然后将该装置放在ScrollViewer中。
我不是100%确定AutoSize / No Scrollbar是否是std ListBox的选项,但您应该能够使用ItemsPanel。
答案 1 :(得分: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>
答案 2 :(得分:0)
如果我理解你的意图,下面的代码示例应该会有所帮助。
注意使用UIHelpers.FindVisualChild(...)可以通过搜索“wpf FindVisualChild”在线找到此方法的代码。 垂直偏移(e.NewValue * 10)的计算似乎运行良好,但10的值来自几个测试。你可以 能够计算出更好的价值或以更好的方式得出它。
<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);
}
答案 3 :(得分:0)
我想你在你的顶级ListBox中设置ScrollViewer.CanContentScroll =“False” - 我遇到了这个问题。