Я пытаюсь сортировать столбцы по числовому содержимому. Преобразователь привязки Multi -работает нормально. Это решение установит для 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, не поддерживать сортировку по некоторым столбцам и для некоторой сортировки значения соседнего столбца -