0

私は今ここで3週間立ち往生しています、私は死にかけています:-)

コレクションを更新すると、SortDescriptionが機能しません。これは、インターネットで読んだwpfの既知のバグです。

しかし、私はそれを機能させることができないようです...私の経験はそれほど遠くないようです:-)誰かが私を助けてくれて私のデータグリッドを再ソートする方法を教えてもらえますか...

xaml:

<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を公開し、それにアクセサを取得および設定してから、DataGridをItemsSource ="{BindingSmsListCollectionView}"でバインドします。CollectionViewSourceを使用すると、GetDefaultViewメソッドがソートできないビューを返しました。すべてをListCollectionViewに切り替えて以来、問題はありませんでした。

更新に関しては、大丈夫だと思います。このSOの質問とその解決策を参照してください。

于 2012-12-31T13:06:01.017 に答える