从ReadOnlyObservableCollection转换为List <myclass> </myclass>

时间:2013-07-17 03:48:42

标签: c# silverlight datagrid

我有一个带有分组的数据网格,我正在尝试设置模板样式以添加有关该组的一些摘要。

在XAML DataGrid.RowGroupHeaderStyle

        <Grid Grid.Column="3" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Stretch" Margin="0,1,0,1" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="200"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <TextBlock Grid.Column="0" Text="{Binding Name}" Margin="4,0,0,0" />
            <TextBlock Grid.Column="1" Text="{Binding Items, Converter="{StaticResource summaryConverter}"}" />
        </Grid>

数据网格项源的绑定

    PagedCollectionView collection = new PagedCollectionView(e.Result.ToList<MyClass>());
    collection.GroupDescriptions.Add(new PropertyGroupDescription("Name"));
    dataGrid.ItemsSource = collection;

MyClass的

    class MyClass {
        public string Name;
        public double Value;
    }

我创建了一个转换器来抓取同一组的项目但我在将对象转换为List<MyClass>()时遇到了问题。我收到此错误

  

无法转换类型&#39; System.Collections.ObjectModel.ReadOnlyObservableCollection 1[System.Object]' to type 'System.Collections.Generic.List 1 [MyClass]&#39;的对象。   `

在Converter.cs中

    public object Convert(object values, Type targetType, object param, CultureInfo culture) {
        var source = (List<MyClass>)values;
    }

有谁知道我应该如何进行转换?

1 个答案:

答案 0 :(得分:1)

使用LINQ。

public object Convert(object values, Type targetType, object param, CultureInfo culture) {
    var source = (ReadOnlyObservableCollection<object>) values;
    List<MyClass> list = source.OfType<MyClass>().ToList();
    ...
}