2010-02-22 107 views
0

我有一個數據庫Silverlight DataGrid控件,我正在嘗試排序。我使用RIA服務(測試版)作爲我的數據源,如果這有什麼不同。排序數據綁定Silverlight DataGrid

我對Silverlight中的數據綁定頗爲陌生,所以這可能是我錯過了一些非常明顯的事情,但我似乎無法找到任何信息。我希望能夠使用綁定語法將ItemSource綁定到xaml中的集合,並將其排序在一列上。

我意識到我可以在代碼中設置ItemsSource並使用LINQ to .OrderBy()。但是我沒有這樣的約束力。似乎應該有一個簡單的方法來做到這一點,但我找不到一個。 我該如何保留綁定,然後訂購我的收藏?

回答

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你也可以使用PropertyGroupDescript添加分組離子)

+0

是的,這正是我所要做的。謝謝。 –

1

當您使用RIA Services時,您可以在您的XAML中使用DomainDataSource。這將允許您添加SortDescriptors,它將完成您的訂購。請參閱下面我舉的例子:

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