2013-12-17 3 views
0

Я получаю новое значение по оси x для каждой строки диаграммы. Мне нужно только первое (или последнее) значение на x-axit из линии диаграммы или лучше, оно показывает только месяц 1-12.Как получить только одно значение оси x в элементе управления диаграммой WPF

LineSeries lineSeries = new LineSeries(); 
    lineSeries.DataPointStyle = dataPointStyle; 
    lineSeries.DependentValuePath = "Indextal"; 
    lineSeries.IndependentValuePath = "Dato"; 

    lineSeries.IndependentAxis = new DateTimeAxis 
    { 
    Orientation = AxisOrientation.X, 
    Location = AxisLocation.Bottom, 
    IntervalType = DateTimeIntervalType.Months 
    }; 
    //((DateTimeAxis)lineSeries.IndependentAxis).Visibility = Visibility.Hidden; 

    lineSeries.ItemsSource = IndsætGrafData(år); 
    chart_LineSeries.Series.Add(lineSeries); 

Изображение показывает результат, который я получаю. Мне нужна только 1 дата каждого месяца. There are to many dates

ответ

0

Это потому, что вы создаете DateTimeAxis 2 раза. Перемещение строительства этой оси конструктору, как это, так что он будет создан только один раз:

private DateTimeAxis _xAxis; 

public MainWindow() 
{ 
    InitializeComponent(); 

    this._xAxis = new DateTimeAxis 
    { 
     Orientation = AxisOrientation.X, 
     Location = AxisLocation.Bottom, 
     IntervalType = DateTimeIntervalType.Months 
    }; 

    chart_LineSeries.Axes.Add(this._xAxis); 

    // ... 
} 

Затем измените код, где вы установите ось:

lineSeries.IndependentAxis = this._xAxis; 
+0

Я понимаю, чего вы хотите, но когда я пытаюсь, это становится еще хуже. См. Мой ответ. – MHP

0

Vorrtex, когда я попробовал ваш ответ, получаю этот результат: enter image description here

Вот еще код, может быть, он может помочь?

private DateTimeAxis _xAxis; 

public MainWindow() 
{ 
InitializeComponent(); 

this._xAxis = new DateTimeAxis 
{ 
    Orientation = AxisOrientation.X, 
    Location = AxisLocation.Bottom, 
    IntervalType = DateTimeIntervalType.Months 
}; 

chart_LineSeries.Axes.Add(this._xAxis); 
} 


void GrafListe() 
{ 
    label_Info.Content = ""; 
    chart_LineSeries.Series.Clear(); 
    aktiekursListe = controller_Aktiekurs_Database.HentAltFraAktiekursTabellen(idVirksomhedensStamdata); 

    if (aktiekursListe.Count() > 0) 
    { 
    datoListe = controller_Dato.HentAlleDatoer(); 
    chart_LineSeries.Visibility = Visibility.Visible; 

    var myYear = 
     from a in aktiekursListe 
     join d in datoListe on a.IdDato equals d.Id 
     orderby d.DagTid descending 
     select new { d.DagTid.Year }; 

    int[] antalÅr = new int[myYear.Distinct().Count()]; 
    int antal = 0; 
    foreach (var item in myYear.Distinct()) 
    { 
     antalÅr[antal] = item.Year; 
     antal++; 
    } 

    for (int i = 0; i < antalÅr.Count(); i++) 
    { 
     GrafData(antalÅr[i]); 
    } 
    } 
    else 
    label_Info.Content = "xx"; 
} 




void GrafData(int år) 
{ 
    Style dataPointStyle; 
    dataPointStyle = GetNewDataPointStyle(år); 

    LineSeries lineSeries = new LineSeries(); 
    lineSeries.DataPointStyle = dataPointStyle; 
    lineSeries.Title = år.ToString(); 
    lineSeries.DependentValuePath = "Indextal"; 
    lineSeries.IndependentValuePath = "Dato"; 
    lineSeries.ItemsSource = IndsætGrafData(år); 
    chart_LineSeries.Series.Add(lineSeries); 
} 
+0

Вы не добавили строку 'lineSeries.IndependentAxis = this._xAxis;' к вашему методу 'GraphData', как я сказал вам в последнем абзаце моего ответа. Также верно, что зеленый график находится перед красным, потому что у них разные годы, а 2011 год - до 2012 года. ЕСЛИ вы хотите всего 12 месяцев, вы можете использовать CategoryAxis. – vorrtex

Смежные вопросы