wpfdatagrid度假酒店

wpfdatagrid度假酒店,wpf,datagrid,collectionview,Wpf,Datagrid,Collectionview,我被困在这里三个星期了,我要死了:-) 当我刷新我的收藏时,SortDescription不起作用。这是我在网上看到的wpf中的一个已知错误 但我似乎无法让它工作。。。我的经历似乎并不遥远:——) 谁能帮我一下,告诉我如何重新排序我的数据网格 xaml: 在C代码中创建ListCollectionView并用xml文档填充它。将ListCollectionView公开,并为其提供get和set访问权限,然后使用ItemsSource=“{Binding SmsListCollectionView

我被困在这里三个星期了,我要死了:-)

当我刷新我的收藏时,SortDescription不起作用。这是我在网上看到的wpf中的一个已知错误

但我似乎无法让它工作。。。我的经历似乎并不遥远:——) 谁能帮我一下,告诉我如何重新排序我的数据网格

xaml:

在C代码中创建ListCollectionView并用xml文档填充它。将ListCollectionView公开,并为其提供get和set访问权限,然后使用ItemsSource=“{Binding SmsListCollectionView}”绑定DataGrid。有一次,我使用了CollectionViewSource,GetDefaultView方法返回了一个不可排序的视图。我把所有的东西都切换到ListCollectionView,从那以后就没有问题了


关于刷新,我认为您可以,

您确定正在访问if(dataGrid1.ItemsSource!=null){…}中的代码吗?如果尚未为网格设置ItemsSource,则它将永远不会刷新。很抱歉没有将其作为答案发布,但我没有“dataGrid1”的代码(请也发布)。让我知道这是否有帮助,Regardsys,代码正在访问中,因为我尝试了messagebox,如果我刷新它就会显示:-)我用DataGrid1的代码更新了我的帖子这有点遥不可及,但当你陷入困境时,一切都值得一试:在你的C代码中创建一个ListCollectionView并用xml文档填充它。将ListCollectionView公开,并为其提供get和set访问权限,然后使用ItemsSource=“{Binding SmsListCollectionView}”绑定DataGrid。有一次,我使用了CollectionViewSource,GetDefaultView方法返回了一个不可排序的视图。我把所有的东西都切换到ListCollectionView,从那以后我就没有问题了。嗨!今天早上我试着实施。这个解决方案奏效了!!但是要刷新我所做的,dataContext=null,然后将我的集合回调到dataContext中。这不是一个坏方法吗?因为这样,每次刷新时,我都会重新生成整个datagrid…在我看来,将datacontext设置为null,然后再次设置为ListCollectionView并不坏(尽管ListCollectionView应该通知网格集合中的更改…)。如果你不介意的话,我会把我之前的评论作为答案发布,这样你就可以批准了,好吗?
<XmlDataProvider x:Key="SmsData" XPath="/response/conv/sms" >

    </XmlDataProvider>

    <local:RowColorConverter x:Key="RowColorConverter" />

    <CollectionViewSource x:Key="SmsView"  Source="{StaticResource SmsData}" >
        <CollectionViewSource.SortDescriptions>
            <scm:SortDescription PropertyName="date" Direction="Descending" />
            <scm:SortDescription PropertyName="time" Direction="Descending" />

        </CollectionViewSource.SortDescriptions>

        <CollectionViewSource.GroupDescriptions>
            <dat:PropertyGroupDescription PropertyName="recipient" />

        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>


   ...

   <DataGrid  ItemsSource="{Binding}" DataContext="{StaticResource SmsView}"   Name="dataGrid1">

    ...
     public void makeConnection()
{

            ...

            XmlDocument doc = new XmlDocument();
            doc.Load(readStream);

            //refreshing my data
            xdp = FindResource("SmsData") as XmlDataProvider;
            xdp.Document = doc;

            //re-sort => this not working
            if (dataGrid1.ItemsSource != null)
            {

               CollectionViewSource cvs = FindResource("SmsView") as CollectionViewSource;

               cvs.GroupDescriptions.Clear();
               cvs.GroupDescriptions.Add(new PropertyGroupDescription("recipient"));
               cvs.SortDescriptions.Clear();
               cvs.SortDescriptions.Add(new SortDescription("date",ListSortDirection.Descending));
       cvs.SortDescriptions.Add(new SortDescription("time",ListSortDirection.Descending));
               cvs.View.Refresh();
                 }

}