对数据绑定Silverlight DataGrid进行排序

时间:2010-02-22 04:38:22

标签: c# wpf silverlight data-binding

我有一个数据绑定Silverlight DataGrid控件,我正在尝试排序。我正在使用RIA服务(测试版)作为我的数据源,如果这有任何区别的话。

我对Silverlight中的数据绑定很新,所以这可能是我错过的非常明显的事情,但我似乎无法找到任何信息。我希望能够使用绑定语法将ItemSource的绑定设置为xaml中的集合,并将其排序在一列上。

我意识到我可以在代码中设置ItemsSource并使用LINQ to .OrderBy()。但我没有这样的约束力。似乎应该有一个简单的方法来做到这一点,但我找不到一个。 如何保留绑定并订购我的收藏?

2 个答案:

答案 0 :(得分:1)

在使用RIA Services时,您可以在XAML中使用DomainDataSource。这将允许您添加SortDescriptors,它将执行您的订购。请参阅下面的示例:

                  

<riaControls:DomainDataSource.SortDescriptors>
    <riaData:SortDescriptor Direction="Ascending" 
                            PropertyPath="Name" />
</riaControls:DomainDataSource.SortDescriptors>

答案 1 :(得分:1)

看一下使用CollectionViewSource。你基本上在实际的数据收集和数据绑定控制之间使用一个作为“中间人”。

粗略的例子:

<Window.Resources>
    <CollectionViewSource 
              Source="{Binding <<<bind to your collection here >>> }"   
              x:Key="myDataView" />

    </Window.Resources>

...

<ListBox Name="lsyFoo" 
    ItemsSource="{Binding Source={StaticResource myDataView}}">

...

然后在你的代码中:

myDataView.SortDescriptions.Add(
                new SortDescription("<<<insert property to sort by>>>", ListSortDirection.Ascending));

(ps。您也可以使用PropertyGroupDescription添加分组)