wpf 工具包、数据网格、组合框列
在数据网格中,我有两个 DataGridComboBoxColumns。其中一列的项目应取决于另一列中选择的内容。用于建模的底层集合是一个 dictionary
我应该如何实现这个?我似乎无法连接到列上的任何相关事件,并且我找不到任何支持此功能的数据绑定方案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不久前我遇到了同样的情况,并像这样修复了它:
DataItem 是绑定到 DataRow 的对象。
这只是代码的一个小模型。基本上,每当 TypeSet 发生更改时,我都需要显示新的类型列表。我只使用了一个静态列表,在这个例子中我使用了一个字典。
通过此设置,您可以将组合框 ItemsSource 绑定到“DisplayableComboBoxItems”,并将 SelectedValue 绑定到“TypeId”。
您将需要其他属性来显示正确的文本而不是 TypeId。
这样做的缺点是,当您有 1000 多个项目时,所有项目都会有相同的列表。然而我的情况并非如此(DataGrid 显示最多 50 个项目)。
我希望这足够清楚,并且可以帮助您朝着正确的方向前进!
干杯!
罗尔
I had the same scenario a while back and fixed it like this:
DataItem is the object that gets bound to a DataRow.
This is just a small mock-up of the code. Basically, whenever the TypeSet changes, I needed a new list of Types to be displayed. I used just a static list, in this example i used a dictionary.
With this setup you can bind you combobox ItemsSource to the 'DisplayableComboBoxItems', and your SelectedValue to "TypeId".
You're gonna need other properties to display the correct text instead of the TypeId.
The downside of this is that when you have 1000+ items, you'll have that same list for all items. This wasn't however the case with me (DataGrid showed max 50 items).
I hope this is clear enough and that it helps you in the right direction!
cheers!
Roel
我没有对第二列使用 DataGridComboBoxColumn,而是使用带有嵌入式 Combobox 的 DataGridTemplateColumn。对于 itemsource,我定义了一个转换器:
string ->列表<字符串>
。转换器将另一个DataGridComboBox(绑定到Navn
)的选定项的值转换为List
,这只是一个字典查找。就像这样:
Instead of using a DataGridComboBoxColumn for the second column, I went with a DataGridTemplateColumn with an embedded Combobox. For the itemsource i defined a converter:
string -> List<string>
. The converter translates the value of the selecteditem of the other DataGridComboBox (which is bound toNavn
) intoList<string>
, this is just a dictionary lookup.Like so: