WPF ComboBox已关闭,但已选择滚动更改项

时间:2018-03-14 09:53:45

标签: c# wpf mvvm scroll combobox

所以我在数据网格内的一个WPF ComboBox里面有几个列表(DataGridComboBoxColumn和带有ComboBox的DataGridTemplateColumn)。 但是,当我更改ComboBox的选定项目时,让鼠标悬停在列表上然后滚动,所选项目将更改。 因为我在DataGrid中有这个(可以有一个滚动条,因为有些列表有4000多个项目我想避免这种情况可能发生在最终用户身上,但是我似乎无法找到如何禁用这个滚动功能。
我已经远程搜索了互联网的各个角落,但我似乎无法为这个问题找到合适的解决方案。

这是我的其中一个ComboBox的源代码:

<!--  Processed status  -->
<DataGridComboBoxColumn Header="Parsed Status"
    SelectedItemBinding="{Binding Status}"
    Width="auto">
    <DataGridComboBoxColumn.ElementStyle>
        <Style TargetType="{x:Type ComboBox}">
            <Setter Property="ItemsSource"
                Value="{Binding StatusList}" />
        </Style>
    </DataGridComboBoxColumn.ElementStyle>
    <DataGridComboBoxColumn.EditingElementStyle>
        <Style TargetType="{x:Type ComboBox}">
            <Setter Property="ItemsSource"
                Value="{Binding StatusList}" />
        </Style>
    </DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>

现在,这是问题的解决方案。整个应用程序是用MVVM编写的,因此修复应该完全没有代码隐藏。 :)

谢谢你看看。
亲切的问候。

1 个答案:

答案 0 :(得分:0)

尝试使用模板列而不是DataGridComboboxColumn,如下所示:

<DataGridTemplateColumn Header="Parsed Status">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding StatusList}" DisplayMemberPath="DisplayProperty"
                                  SelectedValuePath="ValueProperty" SelectedItem="{Binding Status}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

如果你有多个这样的列,那么在窗口资源中定义DataTemplate,并根据它的键重新使用它,如下所示:

<DataGridTemplateColumn Header="Parsed Status" CellTemplate="{StaticResource TemplateResourceKey}">