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

标签 c# wpf mvvm scroll combobox

因此,我在datagrid内的WPF ComboBox内有几个列表(带有ComboBox的DataGridComboBoxColumn和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编写的,因此该修补程序应完全实现而无需任何代码隐藏。 :)

感谢您的关注。

亲切的问候。

最佳答案

尝试使用模板列而不是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}">

关于c# - WPF ComboBox已关闭,但已选择滚动更改项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49274524/

相关文章:

c# - tabcontroller 中的两个选定选项卡

c# - 将 ContentPresenter.Content 转换为 UIElement 是否合适?

c# - 将 WPF 应用程序作为 Windows 服务运行

jquery - Kendo MVVM - 使用 data-show 绑定(bind)布局

c# - MVVM 同步集合

c# - 是否可以在 OS X 中使用 WPF 和 C# 之类的东西?

C# get、set访问器与数组结合【system.null引用异常】

c# - 获取小数点前的位数

c# - 在悬停时定位元素 - WPF - C# - 动态数据显示

c# - Task.Run 中的全局错误处理