ScrollViewer中的ComboBox不会使用MouseWheel

时间:2017-06-16 09:18:23

标签: c# wpf combobox

我一直在这里问,希望先找一个答案,但我没有成功。

我的窗口左侧是什么是搜索过滤条,看起来像这样(为了大小,我省略了大多数控件,因为大多数都是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,以便用户不必拖动滚动条。

由于

1 个答案:

答案 0 :(得分:0)

answer建议使用{/ 3}}这样的方法

ScrollViewer sv = comboBox.Template.FindName("DropDownScrollViewer", comboBox) as ScrollViewer;
if (sv != null)
{
    // Do something...
}