0

我现在被困在这里 3 周了,我快死了 :-)

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

但我似乎无法让它工作......我的经验似乎并不那么远:-)有人可以帮助我并告诉我如何重新排序我的数据网格......

xml:

<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">

    ...

我通过代码绑定数据提供者,它是我从互联网 url 获取的 xml 文件。

CS:

     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();
                 }

}
4

1 回答 1

0

在您的 C# 代码中创建一个 ListCollectionView 并使用 xml 文档填充它。将 ListCollectionView 设为公共并为其提供 get 和 set 访问器,然后将 DataGrid 与 ItemsSource="{Binding SmsListCollectionView}" 绑定。一旦我使用了 CollectionViewSource 并且 GetDefaultView 方法返回了一个不可排序的视图。我将所有内容都切换到 ListCollectionView,从那以后我就再也没有问题了。

关于刷新,我认为您还可以,请参阅此 SO question 及其解决方案。

于 2012-12-31T13:06:01.017 回答