所以我在数据网格内的一个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编写的,因此修复应该完全没有代码隐藏。 :)
谢谢你看看。
亲切的问候。
答案 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}">