C# 基于虚拟化属性的WPF数据网格排序
让我直接开始吧。我有一个DataGrid,其中有几个集合列,如下所示: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
<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>