我有一个DataGrid
其主要目的是允许用户在其单元格中输入数据。
但是,此网格中的第一个字段应显示列表的内容。
我将如何为一列设置数据源?
编辑:我想实现这样的目标:
除了我的评论之外,一种简单的方法是包装您的 itemssource 集合并为每个项目添加一个列表 - 使用您期望的数据。
好消息是您不必为第一列设置不同的来源,您只需绑定到新的列表属性
编辑:
我希望我有你的问题。
假设您的网格有一个 itemssource:
List<MyObject> _list;
您的 myobject 包含 Asc/Desc、GroupBy、Having、Dispplayorder 属性。
所以我会创建一个 MyObjectWrapper 并添加 Field 属性
public class MyObjectWrapper
{
public MyObject WrappedOject {get;set;}
public string Fields {get;set}
}
你最终得到了一个新的
List<MyObjectWrapper> _wrapperlist;
这些集合包含您需要显示的所有信息。
在 中指定您自己DataGridTemplateColumn
的DataGrid.Columns
,并将 设置DataGridTemplateColumn.CellTemplate
为您要放置在该列中的任何内容。
例如,如果您希望它ComboBox
指向其他字段列表:
<DataGrid.Columns>
<DataGridTemplateColumn Header="Fields">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding ElementName=MyWindow, Path=DataContext.SomeCategoryList}"
SelectedItem="{Binding SomePropertyOnDataItemInRow}" />
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
我正在使用一个名为SomeCategoryList
that's on的属性MyWindow.DataContext
,但是您可以将绑定设置为指向存储字段列表的位置