如何仅为一列设置源

时间:2012-10-26 13:46:46

标签: c# wpf xaml datagrid

我有DataGrid,其主要目的是允许用户在其单元格中输入数据。

但是,此网格中的第一个字段应显示列表的内容。

我如何只为一列设置数据源?

编辑:我希望达到以下目标:

enter image description here

2 个答案:

答案 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的属性,但您可以将绑定设置为指向存储字段列表的位置