C# 如何按多转换器输出对WPF ListView列进行排序

C# 如何按多转换器输出对WPF ListView列进行排序,c#,wpf,listview,converters,columnsorting,C#,Wpf,Listview,Converters,Columnsorting,我想按多转换器输出对ListView列进行排序 我使用ListView及其GridViewColumns来显示绑定中的数据 将处理程序“SortClickUniversal()”添加到ListView,ListView反过来调用“Sort()” 如果“Sort()”在上面找到GridViewColumnHeader的内容字符串,它将通过绑定元素(“WartVPreis”)创建一个SortDescription,并将其添加到ListView ItemSource的默认视图中 这对于简单的绑定(“W

我想按多转换器输出对ListView列进行排序 我使用ListView及其GridViewColumns来显示绑定中的数据

将处理程序“SortClickUniversal()”添加到ListView,ListView反过来调用“Sort()”

如果“Sort()”在上面找到GridViewColumnHeader的内容字符串,它将通过绑定元素(“WartVPreis”)创建一个SortDescription,并将其添加到ListView ItemSource的默认视图中

这对于简单的绑定(“WartVPreis”)很好。但我还有一个列,由多重绑定转换器填充:

<GridViewColumn Width="110" >
    <GridViewColumn.Header>
        <GridViewColumnHeader Content="WV Aktuell Netto €" 
    </GridViewColumnHeader>
    </GridViewColumn.Header>
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock 
                Text="{Binding WartVPreis, ConverterCulture=de-DE, StringFormat={}{0:F2}}"  
                HorizontalAlignment="Right" 
                />
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>
XAML


如何通过多重转换器输出及其多重绑定对列进行排序

private void SortClickUniversal(object sender, RoutedEventArgs e)
{
        //...
        var sortBy = (e.OriginalSource as GridViewColumnHeader).Content.ToString();
        bool sortieren = Sort(sortBy, direction, sender);
        //...
}



private bool Sort(string sortBy, ListSortDirection direction, object sender)
{
    switch (sortBy)
    {
        //...
        case "WV Aktuell Netto €": sortBy = "WartVPreis"; break;
        //...
        SortDescription sd = new SortDescription(sortBy, direction);
        dataView.SortDescriptions.Add(sd);
    }
}
<GridViewColumn Width="90" >
    <GridViewColumn.Header>
        <GridViewColumnHeader Content="WV Ant. Net €"></GridViewColumnHeader>
    </GridViewColumn.Header>
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock HorizontalAlignment="Right" >
                <TextBlock.Text>
                    <MultiBinding Converter="{StaticResource MultiWVAnteilConverterKey}" ConverterCulture="de-DE" StringFormat="{}{0:F2}">
                        <Binding Path="WartVPreis" />
                        <Binding Path="Dtvon" />
                        <Binding Path="Dtbis" />
                        <Binding Path="WartVZyklus" />
                        <Binding Path="WartVBJVON" />
                        <Binding Path="WartVBJBIS" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>