我正在尝试对数字内容进行列排序。多重绑定转换器工作正常。 此解决方案将SortMemberPath设置为null
我尝试过多种方式,并大量搜索互联网。
出于安全考虑,代码已从原件进行了修改。
<DataGridTemplateColumn x:Name="avgPriceColumn">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource avgPriceConverter}">
<Binding Path="NumberToDivideBy" />
<Binding Path="TotalDollars" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.SortMemberPath>
<MultiBinding Converter="{StaticResource avgPriceConverter}">
<Binding Path="NumberToDivideBy" />
<Binding Path="TotalDollars" />
</MultiBinding>
</DataGridTemplateColumn.SortMemberPath>
</DataGridTemplateColumn>
编辑: 我发现了一种在没有多重绑定的情况下使数据绑定工作的方法,但排序仍然不起作用。由于DataGrid绑定到一个自定义类,因此我接受了整个值并从中进行转换,从而减少了对MultiBinding的需求。
<DataGridTextColumn x:Name="avgPriceColumn" Binding="{Binding Converter={StaticResource avgPriceConverter}}" SortMemberPath="{Binding Converter={StaticResource avgPriceConverter}}" />
在这两个选项中,SortMemberPath默认设置为Binding,因此我不需要像我一样明确定义它
但是,最终将SortMemberPath值设置为null,这与适用于我的代码环境的自定义约束冲突,并且不进行排序。所以我仍然对更好的解决方案感兴趣。
编辑:
在其他位置更改了冲突的代码,以允许重复的SortMemberPath,不支持对某些列进行排序,以及对某些列的邻近列值进行排序
答案 0 :(得分:7)
SortMemberPath期望属性的名称(例如“TotalDollars”)不是单独计算的行值。把它想象成标题,你为整列设置一次。您的转换器将返回一个类似15的数字,其中SortMemberPath需要一个绑定路径字符串。
可以想到两个选项: