WPF DataGrid排序后,绑定数据的更新问题。
用的MVVM框架XML里面DataGrid的部分定义如下:DataGrid绑定数据源GoodsSummaryList<DataGridFontSize="12"Name=...
用的MVVM框架
XML里面DataGrid的部分定义如下:DataGrid绑定数据源GoodsSummaryList
<DataGrid FontSize="12" Name="goodsList" ItemsSource="{Binding GoodsSummaryList}" ......>
<DataGrid.Columns>
<DataGridTextColumn Header="商品类别" Width="auto" Binding="{Binding class_big}" />
<DataGridTextColumn Header="商品编号" Width="auto" Binding="{Binding goods_sn}"
.............
...........
/>
</DataGrid.Columns>
</DataGrid>
获取数据的方法我直接写到了xml.cs里,获取到数据后,按下paixu按钮,对数据进行排序
public partial class Summary : Window
{
SummaryViewModel sum = null;
public Summary()
{
InitializeComponent();
sum = new SummaryViewModel();
this.DataContext = sum;
}
......//此处省略
private void paixu_Click(object sender, RoutedEventArgs e)
{
ICollectionView view = CollectionViewSource.GetDefaultView(sum.GoodsSummaryList);
view.SortDescriptions.Add(new SortDescription("class_big", ListSortDirection.Ascending));
view.SortDescriptions.Add(new SortDescription("goods_name", ListSortDirection.Ascending));
}
......//此处省略
}
按下按钮之后,界面上确实是按照我的要求,先品类再名称排序了,但是sum.GoodsSummaryList中的数据却还是原来的排列顺序。我要怎么更新它的排列顺序?
附上ViewModel的GoodsSummaryList的定义:
private ObservableCollection<goods> goodsSummaryList;
public ObservableCollection<goods> GoodsSummaryList
{
get { return goodsSummaryList; }
set
{
goodsSummaryList = value;
this.RaisePropertyChanged("GoodsSummaryList");
}
} 展开
XML里面DataGrid的部分定义如下:DataGrid绑定数据源GoodsSummaryList
<DataGrid FontSize="12" Name="goodsList" ItemsSource="{Binding GoodsSummaryList}" ......>
<DataGrid.Columns>
<DataGridTextColumn Header="商品类别" Width="auto" Binding="{Binding class_big}" />
<DataGridTextColumn Header="商品编号" Width="auto" Binding="{Binding goods_sn}"
.............
...........
/>
</DataGrid.Columns>
</DataGrid>
获取数据的方法我直接写到了xml.cs里,获取到数据后,按下paixu按钮,对数据进行排序
public partial class Summary : Window
{
SummaryViewModel sum = null;
public Summary()
{
InitializeComponent();
sum = new SummaryViewModel();
this.DataContext = sum;
}
......//此处省略
private void paixu_Click(object sender, RoutedEventArgs e)
{
ICollectionView view = CollectionViewSource.GetDefaultView(sum.GoodsSummaryList);
view.SortDescriptions.Add(new SortDescription("class_big", ListSortDirection.Ascending));
view.SortDescriptions.Add(new SortDescription("goods_name", ListSortDirection.Ascending));
}
......//此处省略
}
按下按钮之后,界面上确实是按照我的要求,先品类再名称排序了,但是sum.GoodsSummaryList中的数据却还是原来的排列顺序。我要怎么更新它的排列顺序?
附上ViewModel的GoodsSummaryList的定义:
private ObservableCollection<goods> goodsSummaryList;
public ObservableCollection<goods> GoodsSummaryList
{
get { return goodsSummaryList; }
set
{
goodsSummaryList = value;
this.RaisePropertyChanged("GoodsSummaryList");
}
} 展开
1个回答
展开全部
this.RaisePropertyChanged("GoodsSummaryList");把这一句在你的按键中执行一次
为了做到,把你的按键命令也得写在viewmodel里
为了做到,把你的按键命令也得写在viewmodel里
更多追问追答
追问
追答
看错了,以为你是数据排好了,界面没排好
现在的问题是你用ICollectionView引起的,view对象的排序,过滤及分组.这些功能和数据对象本身是相互独立的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询