Вземете цвета на серията по подразбиране в кода отзад за LineSeries2D за DevExpress ChartControl

Имам някои LineSeries2D елементи вътре в XYDiagram2D.Series. Искам да получа свойството Brush в кода отзад. Когато опитам кода по-долу, свойството на серийната четка е нула. Само ако задам свойството четка в 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