我一直在这里问,希望先找一个答案,但我没有成功。
我的窗口左侧是什么是搜索过滤条,看起来像这样(为了大小,我省略了大多数控件,因为大多数都是ComboBox
并遇到同样的问题):
<Grid Grid.Column="0" Background="#FF1E2125">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<ScrollViewer x:Name="scroll_filter" Grid.Row="0" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<StackPanel Grid.Row="0" Orientation="Vertical" Margin="0,0,0,10">
<TextBlock Grid.Row="0" Text="User" Foreground="White" VerticalAlignment="Center" FontSize="12" Margin="10,3,10,3"/>
<ComboBox x:Name="cbo_search_user" Grid.Row="1" Margin="10,3,10,3" SelectedIndex="0" IsTextSearchEnabled="True" TextSearch.TextPath="ID">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid Height="20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding ID}" VerticalAlignment="Center" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" Text="{Binding Full_Name}" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<!-- Other controls omitted for clarity -->
</StackPanel>
</ScrollViewer>
<Button x:Name="btn_search" Grid.Row="1" Content="Search" Margin="10,3,10,10" VerticalAlignment="Bottom" Height="28" Foreground="White" Style="{StaticResource ButtonWithoutHover}" Background="#FF41B1E1" Click="btn_search_Click"/>
</Grid>
我的ComboBox正在通过ItemsSource
从代码后面填充,并且可以包含多个结果,以便ComboBox获得自己的ScrollViewer。
ScrollViewer就在那里,以便在调整窗口大小时用户可以看到控件。
ScrollViewer使用鼠标滚轮滚动(拖动横杆)这很好,但问题是,当我下载一个包含许多项目的ComboBox时,我无法使用鼠标滚轮滚动。
ScrollViewer(如果足够小且可滚动)似乎接管并上下滚动整个批次而不是扩展的ComboBox中的项目。
如果在ScrollViewer上看不到滚动条,则使用鼠标滚轮滚动不会执行任何操作,并且在ComboBox中滚动的唯一方法是拖动它的滚动条。
如何使用鼠标滚轮滚动ScrollViewer中的ComboBox,以便用户不必拖动滚动条。
由于
答案 0 :(得分:0)
此answer建议使用{/ 3}}这样的方法
ScrollViewer sv = comboBox.Template.FindName("DropDownScrollViewer", comboBox) as ScrollViewer;
if (sv != null)
{
// Do something...
}