Сортировка с привязкой к данным Silverlight DataGrid - PullRequest
0 голосов
/ 22 февраля 2010

У меня есть элемент управления Silverlight DataGrid с привязкой к данным, который я пытаюсь отсортировать. Я использую службы RIA (бета) для моего источника данных, если это имеет какое-либо значение.

Я довольно новичок в привязке данных в Silverlight, так что это может быть что-то действительно очевидное, что я пропустил, но я не могу найти какую-либо информацию об этом. Я хочу иметь возможность установить привязку ItemSource к коллекции в xaml, используя синтаксис привязки, и сортировать ее по одному столбцу.

Я понимаю, что могу установить ItemsSource в коде и использовать LINQ для .OrderBy (). Но я не получаю связывания таким образом. Кажется, должен быть простой способ сделать это, но я не могу его найти. Как мне сохранить обязательную привязку при заказе моей коллекции?

Ответы [ 2 ]

1 голос
/ 22 февраля 2010

взгляните на использование 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));

(пс. Вы также можете добавить группировку, используя PropertyGroupDescription)

1 голос
/ 22 февраля 2010

Поскольку вы используете службы RIA, вы можете использовать DomainDataSource в своем XAML. Это позволит вам добавить SortDescriptors, которые будут делать ваш заказ. Смотрите мой пример ниже:

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

...