C# 如何将string类型的ObservableCollection绑定到Datagrid

C# 如何将string类型的ObservableCollection绑定到Datagrid,c#,.net,wpf,mvvm,datagrid,C#,.net,Wpf,Mvvm,Datagrid,我有一个非常简单的查询,我有一个类型为string的observedcollection,名为Complaints。现在,我想将这个observateCollection绑定到一个DataGrid,它有两列:一个是checkbox模板列,另一个是包含投诉的Complaint列。我想知道如何做到这一点?我正在使用MVVM。我已将DataGrid的ItemsSource属性设置为Complaints,但无法查看数据,因为我不知道为DataGrid的第二列放入Binding。我该怎么做 我的视图模型

我有一个非常简单的查询,我有一个类型为
string
observedcollection
,名为Complaints。现在,我想将这个
observateCollection
绑定到一个
DataGrid
,它有两列:一个是checkbox模板列,另一个是包含投诉的
Complaint
列。我想知道如何做到这一点?我正在使用MVVM。我已将
DataGrid
ItemsSource
属性设置为
Complaints
,但无法查看数据,因为我不知道为
DataGrid
的第二列放入
Binding
。我该怎么做

我的视图模型

公共类MyViewModel():INotifyPropertyChanged
{
私人可观察收集投诉;
公众可见的收集投诉
{
得到
{
投诉退回;;
}
设置
{
_抱怨=价值;
通知财产变更(“投诉”);
}
}
}
我的数据网格


//复选框模板列。
//这是我需要显示**投诉**收集的列

您需要设置DataGridTextColumn的绑定属性。此绑定与源集合的数据项相关。由于源集合本身就是要在列中显示的项,因此绑定将被绑定到项本身

<DataGridTextColumn Width="93.4782*" Header="Complaints" Binding="{Binding}"/>
查看模型:

public class Complaint : INotifyPropertyChanged
{
    public bool IsActive { get; set; }
    public string Content { get; set; }
    ...
}
public class ComplaintsViewModel
{
    public ObservableCollection<Complaint> Complaints { get; set; }
    ...
}
<DataGrid ItemsSource="{Binding Complaints}">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Active" Binding="{Binding IsActive}"/>
        <DataGridTextColumn Header="Content" Binding="{Binding Content}"/>
    </DataGrid.Columns>
<DataGrid/>
公共类投诉查看模型
{
公众可观察的收集投诉{get;set;}
...
}
查看:

public class Complaint : INotifyPropertyChanged
{
    public bool IsActive { get; set; }
    public string Content { get; set; }
    ...
}
public class ComplaintsViewModel
{
    public ObservableCollection<Complaint> Complaints { get; set; }
    ...
}
<DataGrid ItemsSource="{Binding Complaints}">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Active" Binding="{Binding IsActive}"/>
        <DataGridTextColumn Header="Content" Binding="{Binding Content}"/>
    </DataGrid.Columns>
<DataGrid/>

您需要设置DataGridTextColumn的绑定属性。此绑定与源集合的数据项相关。由于源集合本身就是要在列中显示的项,因此绑定将被绑定到项本身

<DataGridTextColumn Width="93.4782*" Header="Complaints" Binding="{Binding}"/>
查看模型:

public class Complaint : INotifyPropertyChanged
{
    public bool IsActive { get; set; }
    public string Content { get; set; }
    ...
}
public class ComplaintsViewModel
{
    public ObservableCollection<Complaint> Complaints { get; set; }
    ...
}
<DataGrid ItemsSource="{Binding Complaints}">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Active" Binding="{Binding IsActive}"/>
        <DataGridTextColumn Header="Content" Binding="{Binding Content}"/>
    </DataGrid.Columns>
<DataGrid/>
公共类投诉查看模型
{
公众可观察的收集投诉{get;set;}
...
}
查看:

public class Complaint : INotifyPropertyChanged
{
    public bool IsActive { get; set; }
    public string Content { get; set; }
    ...
}
public class ComplaintsViewModel
{
    public ObservableCollection<Complaint> Complaints { get; set; }
    ...
}
<DataGrid ItemsSource="{Binding Complaints}">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Active" Binding="{Binding IsActive}"/>
        <DataGridTextColumn Header="Content" Binding="{Binding Content}"/>
    </DataGrid.Columns>
<DataGrid/>


好吧,如果你能提供一些代码,那就很有用了。但这里有一个猜测:您是否将网格DataContext设置为“Complaints”?添加了代码。输出窗口中有关于数据错误的任何信息吗?没有,与此无关。我可以看到网格中的datagrid行,因为数据存在,但实际上看不到数据,因为列中没有任何与
Complaints
标题的绑定。嗯,如果你能提供一些代码,它将是有用的。但这里有一个猜测:您是否将网格DataContext设置为“Complaints”?添加了代码。输出窗口中有关于数据错误的任何信息吗?没有,与此无关。我可以看到网格中的datagrid行,因为数据存在,但实际上看不到数据,因为列中没有带有
Complaints
标题的任何绑定。是的,谢谢,这就成功了。是的,我的其他数据网格都绑定到对象集合中,只有这一个。是的,谢谢,这就做到了。是的,我的其他数据网格都绑定到对象集合,只有这一个。