数値コンテンツで列を並べ替えようとしています。マルチバインディングコンバーターは正常に動作します。このソリューションは、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の重複を許可し、一部の列での並べ替えをサポートせず、一部の隣接する列の値を並べ替える