【发布时间】:2013-09-12 05:04:08
【问题描述】:
让我试着说出这个问题的最简单版本:
我的 BOUND DataGrid 中可以有一个 UNBOUND 下拉类型的列吗?
如果上面的陈述太抽象而无法理解,这里是一个例子:
一个名为dgStudents 的DataGrid 绑定到一个名为dtStudents 的DataTable,显示了表格的一些列,例如姓名、年龄和城市,所有这些都是简单的DataGridTextColumns。我想在我的网格中添加一个名为 FavSports 的第 4 列,它是一个简单的下拉类型列,绑定到常见运动的静态列表。这里最重要的是(与其他 3 列不同)此下拉列在 DataTable 中没有对应的列。它只是DataGrid 的生命周期所必需的,所以我不会将它存储在任何地方。
我尝试了以下方法:
<DataGridComboBoxColumn ItemsSource="{StaticResource Sports}">
其中Sports 是直接在 XAML 中定义的数组:
<x:Array x:Key="Sports" Type="sys:String">
<sys:String>Football</sys:String>
<sys:String>Hockey</sys:String>
<sys:String>Tennis</sys:String>
</x:Array>
无法让它为我的生活工作。下拉菜单会显示,用户可以从中选择一个值,该值会在用户移动到另一个单元格后显示,但仅此而已。用户返回该单元格后,下拉列表显示为空,即使用户随后离开单元格而不单击下拉列表,之前的值也会消失。
【问题讨论】:
-
从 Student 派生一个类并添加列。绑定到派生类而不是数据表...
-
谢谢加里。我有这个想法,但底层数据源是由 Web 服务返回的 Typed DataSet。从它派生一个类并向它添加自定义属性将创建比我现在可以处理的更多的工作。
-
这就是 ViewModel 的用途。为此创建一个合适的 ViewModel。
-
策略注入也可以处理这个...
标签: wpf xaml datagrid datagridcomboboxcolumn