2011-02-03 1 views
1
<Window x:Class="tradtest.chart" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit" 
xmlns:charting="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" 

Title="chart" Height="300" Width="500"> 
<Window.Resources> 
    <Style x:Key="SimpleLineSeriesStyle" TargetType="charting:LineDataPoint"> 
     <Setter Property="Width" Value="0"/> 
     <Setter Property="Height" Value="0"/> 
    </Style> 


</Window.Resources> 
<Grid> 
    <charting:Chart x:Name="chart1" > 
     <charting:LineSeries ItemsSource="{Binding}" 

       DependentValuePath="Value" 

       IndependentValuePath="Key" 

       Title="Pet Preference" IsSelectionEnabled="True" /> 
    </charting:Chart> 

</Grid> 

деления для X-оси в WPF Инструментарий диаграмме

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 
using System.Windows.Controls.DataVisualization.Charting; 

namespace tradtest 
{ 
    /// <summary> 
    /// Interaction logic for chart.xaml 
    /// </summary> 
    public partial class chart : Window 
    { 
     void AddSeries(string title, KeyValuePair<string, decimal>[] data, SolidColorBrush linecolor) 
     { 
      LineSeries ls = new LineSeries(); 
      ls.DependentValuePath = "Value"; 
      ls.IndependentValuePath = "Key"; 
      ls.ItemsSource = data; 
      ls.Title = title; 
      Style dpstyle = ls.DataPointStyle; 
      //Style tmp1 = this.Resources["SimpleLineSeriesStyle"] as Style; 
      Style tmp1 = new Style(); 
      tmp1.Setters.Add(new Setter(LineDataPoint.BackgroundProperty, linecolor)); 
      tmp1.Setters.Add(new Setter(LineDataPoint.WidthProperty, 0.0)); 
      tmp1.Setters.Add(new Setter(LineDataPoint.HeightProperty, 0.0)); 
      //wi 
      //dpstyle = tmp1; 
      ls.DataPointStyle = tmp1; 
      //SetterBaseCollection sr = dpstyle.Setters; 
      //SetterBase sb = new Setter(Background, (object)Brushes.AliceBlue); 
      chart1.Series.Add(ls); 
     } 
     public chart(KeyValuePair<string, decimal>[] spreadseries, 
      KeyValuePair<string, decimal>[] meanspreadseries, 
      KeyValuePair<string, decimal>[] enterlongseries, 
      KeyValuePair<string, decimal>[] entershortseries, 
      KeyValuePair<string, decimal>[] exitlongseries, 
      KeyValuePair<string, decimal>[] exitshortseries) 
     { 
      InitializeComponent(); 
      chart1.Series.Clear(); 
      AddSeries("Current Spread", spreadseries, Brushes.MediumPurple); 
      AddSeries("Mean Spread", meanspreadseries, Brushes.Black); 
      AddSeries("Enter Long Spread", enterlongseries, Brushes.Red); 
      AddSeries("Enter Short Spread", entershortseries, Brushes.Red); 
      AddSeries("Exit Long Spread", exitlongseries, Brushes.Orange); 
      AddSeries("Exit Short Spread", exitshortseries, Brushes.Orange); 

     } 
    } 
} 

Я приложил свой код выше. Я не могу удалить отметки по оси X. может кто-нибудь угодить советует?

+0

Я не могу скопировать изображение, следующее URL диаграммы: http://www.quantcode.com/uploads/img4d49673d432fb.png – paseena

+0

Там будет свойство на диаграмме - Я не» t он установлен на этом компьютере, поэтому я не могу проверить, но Intellisense должен показать вам все свойства, которые вы можете установить. – ChrisF

+0

См. Http://stackoverflow.com/questions/2395774/silverlight-wpf-charting-toolkit-can-i-change-frequency-of-tick-marks-on-categor для некоторых советов, но не конкретный ответ. – ChrisF

ответ

1

Вы можете скрыть всю ось Х, как это:

<charting:LineSeries.IndependentAxis> 
    <charting:CategoryAxis Orientation="X" Visibility="Collapsed"/> 
</charting:LineSeries.IndependentAxis> 

добавить его в свой charting:LineSeries элемент или в коде:

series.IndependentAxis = new CategoryAxis { Orientation = AxisOrientation.X, Visibility = Visibility.Collapsed }; 
+0

Большое спасибо за подсказку! К сожалению, я создаю линейки программно. Я пробовал программировать стиль. Но ls.IndependentAxis возвращает мне null в приведенном выше коде, и я не могу имитировать вышеупомянутый XAML в коде. – paseena

+0

Я добавил пример кода. –

+1

Спасибо за пример кода. Я попробовал это, но получаю exection ниже, когда я вызываю Show() в окне, содержащем диаграмму: «Назначенная независимая ось не может быть использована. Это может быть связано с неустановленным свойством ориентации для оси». – paseena

0

Все серии разделяют один и тот же оси Х не так ли? поэтому вы можете добавить общую ось X (категория, как было предложено, лучше, если вы работаете со строковыми независимыми значениями) и установите для AxisLabelStyle отображение или отсутствие содержимого, задающего шаблон содержимого. Я использую это решение, и добавленная серия времени выполнения будет использовать существующую ось X, которую вы добавляете.

НТН