Группировка в DataGrid, связанная с источником данных *sample* (с использованием окна «Данные» Silverlight)

Вопрос по Сильверлайт 5. Я могу группировать элементы в DataGrid, используя PagedCollectionView в качестве его ItemsSource (через GroupDescriptions.Add). Без проблем. Тем не менее, мы дизайнеры (а не опытные программисты), работающие над прототипом, и широко используем окно Blend «Данные», где мы можем удобно создавать образцы источников / коллекций данных и образцы ввода данных. К сожалению, GroupDescriptions.Add, похоже, не работает с этими коллекциями на основе xml, созданными через окно «Данные».

Есть ли способ использовать группировку в DataGrid без использования С#? Или есть способ сгруппировать образцы данных, созданные через окно «Данные» в DataGrid?

Я сделал свое исследование, и я начинаю думать, что это может быть невозможно. Мой первый пост, полегче со мной! Спасибо -


person epoetic    schedule 05.06.2013    source источник


Ответы (1)


Как просмотреть группу Silverlight Datagrid в дизайнере (смесь или VS):

Вы можете попытаться создать привязку XAML CollectionViewSource к образцу коллекции данных:

  1. Создайте новый образец данных с именем «customerSampleData»;
  2. Добавьте свойство коллекции (с именем «Коллекция») с 2 дополнительными свойствами (имя, возраст);
  3. Добавьте CollectionViewSource в ресурсы с PropertyGroupDescription.

Смотрите последний шаг:

xmlns:compMod="clr-namespace:System.ComponentModel;assembly=System.Windows"
xmlns:SampleData="clr-namespace:Expression.Blend.SampleData.customerSampleData"
...
</UserControl.Resources>
    <SampleData:customerSampleData x:Key="customerSampleData" d:IsDataSource="True"/>

    <CollectionViewSource
        x:Key="dataSource"
        d:IsDataSource="True"
        Source="{Binding Collection, Source={StaticResource customerSampleData}}">
        <CollectionViewSource.SortDescriptions>
            <compMod:SortDescription PropertyName="Name" Direction="Ascending"/>
        </CollectionViewSource.SortDescriptions>
        <CollectionViewSource.GroupDescriptions>
            <PropertyGroupDescription PropertyName="Age"/>
        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White" DataContext="">
    <sdk:DataGrid  AutoGenerateColumns="False" DataContext="{Binding Source={StaticResource dataSource}}" ItemsSource="{Binding}" >
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn Binding="{Binding Name}" Header="Name"/>
            <sdk:DataGridTextColumn Binding="{Binding Age}" Header="Age"/>
        </sdk:DataGrid.Columns>
    </sdk:DataGrid>
</Grid>
person Tonio    schedule 06.06.2013
comment
‹3 Blend ;) Это правда, когда видишь в дизайнере, что делаешь, легче. Удачи ! - person Tonio; 06.06.2013
comment
Да, особенно для таких дизайнеров, как мы. Очень приятно видеть, что вы можете настроить xaml (например, изменить поле группировки), и он мгновенно перерисует монтажную область! Аккуратный :- ) - person epoetic; 06.06.2013
comment
Blend и шаблон MVVM отлично подходят для такой команды, как ваша. это позволяет хорошо распределять работу. Спасибо парню, который разработал привязку и XAML;) - person Tonio; 07.06.2013