我有DataGrid
,其主要目的是允许用户在其单元格中输入数据。
但是,此网格中的第一个字段应显示列表的内容。
我如何只为一列设置数据源?
编辑:我希望达到以下目标:
答案 0 :(得分:1)
除了我的评论之外,还有一种简单的方法是包装你的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;
这些集合包含您需要显示的所有信息。
答案 1 :(得分:0)
在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
上使用名为MyWindow.DataContext
的属性,但您可以将绑定设置为指向存储字段列表的位置