Уважаемый, у меня есть ScrollViewer со стековой панелью, ориентированной по горизонтали, и содержит много выпадающих списков. Я пытаюсь прокрутить ScrollViewer по горизонтали и работает, но выпадающий список теряет способность прокручивать, как решить эту проблему, и вынуждает программу прокручивать необходимый элемент не всегда. scrollviewer спасибо
<Grid Name="WindowBody" Margin="2 0 2 0" Grid.Column="1" Background="Transparent" ShowGridLines="False" Height="28" VerticalAlignment="Top">
<ScrollViewer Name="ScrollTest" Height="33" VerticalAlignment="Center" Margin="0 0 0 0" Padding="0 1 0 0"
HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"
PreviewMouseWheel="ScrollTest_PreviewMouseWheel">
<StackPanel Orientation="Horizontal" Name="toolBar" Background="Transparent">
<!--there is many comboboxes and other uielements-->
<ComboBox Width="200">
<ComboBoxItem IsSelected="True">a</ComboBoxItem>
<ComboBoxItem>b</ComboBoxItem>
<ComboBoxItem>c</ComboBoxItem>
<ComboBoxItem>d</ComboBoxItem>
<ComboBoxItem>e</ComboBoxItem>
<ComboBoxItem>f</ComboBoxItem>
<ComboBoxItem>g</ComboBoxItem>
<ComboBoxItem>h</ComboBoxItem>
<ComboBoxItem>j</ComboBoxItem>
<ComboBoxItem>k</ComboBoxItem>
</ComboBox>
</StackPanel>
</ScrollViewer>
</Grid>
и вот код
private void ScrollTest_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
var scrollViewer = sender as ScrollViewer;
//MessageBox.Show( e.OriginalSource.ToString());
if (scrollViewer == null)
return;
if (Keyboard.Modifiers == ModifierKeys.Shift)
{
if (e.Delta < 0)
scrollViewer.LineRight();
else
scrollViewer.LineLeft();
}
else
{
if (e.Delta < 0)
scrollViewer.LineDown();
else
scrollViewer.LineUp();
}
e.Handled = true;
}