C# WPF datagrid:以MVVM方式编程对列进行排序?
我有一个使用WPF数据网格的WPF应用程序。我可以单击列标题对列进行排序,这会自动工作。我想要的是在程序开始时以编程方式选择一列,然后对其进行排序。或者换一种方式说:我想假装用户单击了列标题,但以编程方式执行,即MVVM方式,忽略了后面代码中的更改。有什么解决方案吗?如果您有列表,可以使用Linq查询,如果您使用的是DataTables,则可以使用MyRows=myTable。选择(strExpr,strSort) 首先必须选择要排序的列,然后在viewmodel中可以使用LINQ或MyTable.select(strExpr、strSort) 示例代码C# WPF datagrid:以MVVM方式编程对列进行排序?,c#,wpf,sorting,mvvm,datagrid,C#,Wpf,Sorting,Mvvm,Datagrid,我有一个使用WPF数据网格的WPF应用程序。我可以单击列标题对列进行排序,这会自动工作。我想要的是在程序开始时以编程方式选择一列,然后对其进行排序。或者换一种方式说:我想假装用户单击了列标题,但以编程方式执行,即MVVM方式,忽略了后面代码中的更改。有什么解决方案吗?如果您有列表,可以使用Linq查询,如果您使用的是DataTables,则可以使用MyRows=myTable。选择(strExpr,strSort) 首先必须选择要排序的列,然后在viewmodel中可以使用LINQ或MyTabl
switch(columnname)
{
case "name":
break;
case "FatherName"
break;
}
如果您有列表,可以使用Linq查询,如果您使用的是DataTables,则可以使用MyRows=myTable.Select(strExpr,strSort) 首先必须选择要排序的列,然后在viewmodel中可以使用LINQ或MyTable.select(strExpr、strSort) 示例代码
switch(columnname)
{
case "name":
break;
case "FatherName"
break;
}
我想“MVVM方式”是将您的DataGrid绑定到表示对象集合的CollectionView
,并允许您通过SortDescription
属性管理排序
例如,在viewmodel中有一组对象:
private ObservableCollection<Entity> _entityCollection = null;
public ObservableCollection<Entity> EntityCollection
{
get
{
return _entityCollection;
}
set
{
_entityCollection = value;
RaisePropertyChanged("EntityCollection");
RaisePropertyChanged("CollectionView");
}
}
然后绑定数据网格:
<DataGrid ItemsSource="{Binding Path=CollectionView}">
我想“MVVM方式”是将您的DataGrid绑定到表示对象集合的CollectionView
,并允许您通过SortDescription
属性管理排序
例如,在viewmodel中有一组对象:
private ObservableCollection<Entity> _entityCollection = null;
public ObservableCollection<Entity> EntityCollection
{
get
{
return _entityCollection;
}
set
{
_entityCollection = value;
RaisePropertyChanged("EntityCollection");
RaisePropertyChanged("CollectionView");
}
}
然后绑定数据网格:
<DataGrid ItemsSource="{Binding Path=CollectionView}">
因此,您仍然希望用户单击列标题,但排序代码却位于视图模型中?Timothy,不,我想您理解错了:我希望排序以编程方式执行,而不需要用户按下列标题。或者换一种说法:我的datagrid的默认排序。是的,列标题显示了正确的排序方向。因此,您仍然希望用户单击列标题,但排序代码却在视图模型中?Timothy,不,我想您理解错了:我希望排序以编程方式执行,而不需要用户按下列标题。或者换一种说法:我的datagrid的默认排序。是的,列标题显示正确的排序方向。我有一个网格,其中列有复选框。我想在顶部的复选框中显示所选项目。我正试图以这种方式实施。但排序不适用于我@AlexI have grid with column have check box。我想在顶部的复选框中显示所选项目。我正试图以这种方式实施。但是分类对我来说不起作用@Alex