WPF 工具包 BarSeries 降序

问题描述

WPF toolkit System.Windows.Controls.DataVisualization.Charting.BarSeries 可以设置排序吗?我有以下条形图:

<dvc:Chart x:Name="BarChart">
        <dvc:Chart.Axes>
            <dvc:CategoryAxis Orientation="X">
                <dvc:CategoryAxis.Style>
                    <Style targettype="{x:Type dvc:CategoryAxis}" >
                        <Setter Property="LayoutTransform">
                            <Setter.Value>
                                <RotateTransform  Angle="-180" />
                            </Setter.Value>
                        </Setter>
                    </Style>
                </dvc:CategoryAxis.Style>
                <dvc:CategoryAxis.AxisLabelStyle>
                    <Style x:Name="labelStyleX1" targettype="Control">
                        <Setter Property="FontSize" Value="15"/>
                        <Setter Property="LayoutTransform" >
                            <Setter.Value>
                                <RotateTransform  Angle="-45" />
                            </Setter.Value>
                        </Setter>
                        <Setter Property="Foreground" Value="Black"/>
                    </Style>
                </dvc:CategoryAxis.AxisLabelStyle>
            </dvc:CategoryAxis>
        </dvc:Chart.Axes>
        <dvc:Chart.Series>
            <dvc:BarSeries ItemsSource="{Binding Overall}"
                           DependentValueBinding="{Binding Path=Value}"
                           IndependentValuePath="Key"
                           Title="Overall"
                           x:Name="overBar">
                <dvc:BarSeries.Style>
                    <Style targettype="{x:Type dvc:BarSeries}" >
                        <Setter Property="LayoutTransform">
                            <Setter.Value>
                                <RotateTransform  Angle="-180" />
                            </Setter.Value>
                        </Setter>
                    </Style>
                </dvc:BarSeries.Style>
        </dvc:BarSeries>
</dvc:Chart.Series>
    </dvc:Chart>

由于 CategoryAxis.sortOrder 没有任何影响,我尝试手动将其旋转 180 度,但轴不旋转,将标签留在错误的位置。绑定的字典肯定是排序的,但是这个排序被控制忽略了:

Antecedent = new Dictionary<string,int>(Antecedent.OrderByDescending(x => x.Value).Take(MaxStats));

我也尝试了 this 解决方案,但没有帮助。尽管值被否定,排序顺序不会改变:

enter image description here

我怎样才能颠倒这个系列,在图的顶部获得最多的值?

解决方法

您应该按升序而不是降序对值进行排序。

尝试使用 OrderBy 而不是 OrderByDescending

Antecedent = new Dictionary<string,int>(Antecedent.OrderBy(x => x.Value).Take(MaxStats));

如果它不起作用,请分享您分配给 Overall 属性的代码,因为您将 ItemsSource 绑定到 Overall 属性。