C# 基于虚拟化属性的WPF数据网格排序

C# 基于虚拟化属性的WPF数据网格排序,c#,wpf,sorting,datagrid,C#,Wpf,Sorting,Datagrid,让我直接开始吧。我有一个DataGrid,其中有几个集合列,如下所示: <ctrl:DataGridWithFooter FooterRowsCount="1" x:Name="MyGrid" CanUserDeleteRows="False" CanUserSortColumns="True" AutoGenerateColumns="False" ItemsSource="{Binding Path=Mo

让我直接开始吧。我有一个DataGrid,其中有几个集合列,如下所示:

<ctrl:DataGridWithFooter 
      FooterRowsCount="1" 
      x:Name="MyGrid" 
      CanUserDeleteRows="False" 
      CanUserSortColumns="True"
      AutoGenerateColumns="False" 
      ItemsSource="{Binding Path=Model, UpdateSourceTrigger=PropertyChanged}" 
      IsEnabled="{Binding Path=Idle}">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Level" 
                                        Binding="{Binding Path=Name, Mode=OneWay}" />
<!--Snip-->
</ctrl:DataGridWithFooter>

为了获得所有信息,我需要能够对列表元素进行反映和排序?

我很高兴看到您使用了我的示例(这是我的博客)。实现这一点的方法之一是为特定属性创建公共getter。可能不太方便。因为属性Accessor需要属性。或者可以解析“Attributes[0]”,首先获取属性的值,然后获取索引为[0]的元素

我还决定为这项任务创建另一个解决方案。其主要思想是为datagrid创建一个包装器。一般来说,它看起来像:

<StackPanel>
    <DataGrid/>
    <Footer/>
</StackPanel>

页脚是一个带有文本框的网格(它可以包含多行)此网格中的列与数据网格中的列同步。它还允许创建带有合并单元格的页脚。 在这个解决方案中,您不需要进行任何排序操作。它将由数据网格实现


。稍后我会在博客上分享代码。你可以在我的博客上联系我

是的,这基本上就是我所做的工作,我发现了一个“同步网格”类,它可以让你把两个或更多的网格固定在一起。您的解决方案非常好,是一个组件,我已将其放入库中供以后使用,但不幸的是,它似乎不适合这里。谢谢你的帮助@你能把你的解决方案发到我的博客上吗,我想看看。抱歉,我看不懂你页面上的俄语,但我用的是
public PropertyAccessor(Type targetType, string property) {
    IsList_ = false;
    mTargetType = targetType;
mProperty = property;

    PropertyInfo propertyInfo =
        targetType.GetProperty(mProperty);

    mCanRead = propertyInfo.CanRead;
    mCanWrite = propertyInfo.CanWrite;
    mPropertyType = propertyInfo.PropertyType;
}
<StackPanel>
    <DataGrid/>
    <Footer/>
</StackPanel>