Получите цвет серии по умолчанию в коде для LineSeries2D для DevExpress ChartControl

У меня есть несколько элементов LineSeries2D внутри XYDiagram2D.Series. Я хочу получить свойство Brush в коде позади. Когда я пробую код ниже, свойство кисти серии имеет значение null. Только если я установлю свойство кисти в XAML, я получу правильный результат. Но если я не установлю это в XAML, я ожидаю получить Brush, с которым серия окрашена по умолчанию, а не нуль.

<dxc:XYDiagram2D.Series>
    <dxc:LineSeries2D ArgumentScaleType="Numerical" x:Name="series"
                                          ArgumentDataMember="Time"
                                          ValueDataMember="Value"
                                          DataSource="{Binding Path=ListaChart}">      
    </dxc:LineSeries2D>

    <dxc:LineSeries2D ArgumentScaleType="Numerical" x:Name="series1"
                                          ArgumentDataMember="Time"
                                          ValueDataMember="Value"
                                          DataSource="{Binding Path=ListaChart2}">
    </dxc:LineSeries2D>
</dxc:XYDiagram2D.Series>

и в коде позади:

chart.UpdateData();
chart.UpdateLayout();

foreach (var targetSeries in chart.Diagram.Series.OfType<LineSeries2D>())
{
    vm.SelectedChannelBrush = targetSeries.Brush;
}

if (PNUsLB.SelectedIndex == 0)
{
    vm.SelectedChannelBrush = series.Brush;
}
else
{
    vm.SelectedChannelBrush = series1.Brush;
}

Имя ChartControl - "диаграмма". Моя проблема в том, что series.Brush, series1.Brush и targetSeries.Brush являются нулевыми после того, как диаграммы нарисованы во время выполнения. Итак, как мне получить цвет серии по умолчанию в коде?


person Ungureanu Adrian    schedule 28.06.2013    source источник


Ответы (2)


У меня сегодня было то же самое на уме. Чтобы изменить цвет кисти, вы должны обработать событие, которое выдается из элемента управления диаграммой.

  1. Ваша диаграмма должна иметь возможность запускать события:

    chartControl.CustomDrawCrosshair+=new CustomDrawCrosshairEventHandler(chartControl_CustomDrawCrosshair);
    
  2. Обработайте запущенное событие с помощью функции:

    public void chartControl_CustomDrawCrosshair(object sender, DevExpress.Xpf.Charts.CustomDrawCrosshairEventArgs e)
    {
         e.CrosshairLineElement.Brush = Brushes.DeepSkyBlue;
    }
    

Вот все цвета Windows, которые вы можете использовать для кистей:

http://i.msdn.microsoft.com/dynimg/IC24340.png

С наилучшими пожеланиями, Миджат

person Mijat    schedule 03.12.2013

Я думаю, вам нужно проверить свойство palette. Вы должны найти здесь полный ответ.

person Fares    schedule 28.06.2013
comment
Я использую WPF ChartControl, а не элемент управления ASP.NET. Также я не вижу свойства View в серии. - person Ungureanu Adrian; 28.06.2013
comment
Я исправил свой ответ (извините) :) - person Fares; 28.06.2013
comment
Мне не удалось получить цвета в палитре (я не хочу определять CustomPallet, как в этом примере). Я хочу использовать кисти по умолчанию. Также для каждой кисти мне нужно знать, к какому каналу она принадлежит. Я думаю, что в объекте LineSeries2D должно быть что-то, а не в ChartControl. - person Ungureanu Adrian; 28.06.2013