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
标题的任何绑定。是的,谢谢,这就成功了。是的,我的其他数据网格都绑定到对象集合中,只有这一个。是的,谢谢,这就做到了。是的,我的其他数据网格都绑定到对象集合,只有这一个。