WPFdatagrid结合comboBox

在WPF的DataGrid中希望结合使用ComboBox下拉框,达到下拉选择绑定的效果,在实现的过程中,遇到了一些奇怪的问题,因此记录下来。

网上能够查询到的解决方案:

总共有三种ItemSource常见绑定实现方式:

1.ItemSource是静态资源

2.ItemSource是ComboBoxItem类型的内联集合

3.ItemSource是普通数据集合,需要采用ElementStyle显式样式,不然无法正常绑定与显示。

这三种绑定实现方式可自行搜索了解,这里不做过多赘述。

编码绑定方式有两种:

1.直接使用< DataGridComboBoxColumn/>,配置好ItemSource与SelectedItem;

2.使用模板,即使用< DataGridTemplateColumn Header="xxx">

遇到的问题

这些方法我都尝试过了,但不知道为什么我实现的出现了以下问题,令我十分困惑。

现状就是点击了没展开,但是滑动鼠标滚轮又可以正常切换,真是个莫名奇妙的问题。

最终解决方式

  1. SettingViewModel中需要绑定为ItemSource的集合,直接设定为静态类型,原因是普通集合绑定会失败,即使我用了上述中的显式处理,还是没能成功。
  2. 采用模板而非DataGridComboBoxColumn,我采用DataGridComboBoxColumn绑定时,仍然出现了点击没展开但滚轮滚动能切换选择的问题。
json 复制代码
<DataGridTemplateColumn Header="端口名称">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <ComboBox
                                            Name="cbPortName"
                                            Width="120"
                                            Height="30"
                                            Margin="2"
                                            HorizontalAlignment="Left"
                                            ItemsSource="{x:Static vm:SettingViewModel.PortNames}"
                                            SelectedItem="{Binding PortName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

这样,就能正常下拉选择PortNames,并且让选中与datagrid集合下的portname相绑定了。最终效果:

相关推荐
isyangli_blog1 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008111 小时前
FastAPI APIRouter
开发语言·python
Benszen1 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆1 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木1 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充2 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~2 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6162 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
春生野草2 小时前
反射、Tomcat执行
java·开发语言
雪的季节3 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt