2012-02-13 18 views
5

Ho creato un grafico utilizzando il toolkit WPF toolkit (3.5) e non riesco a ottenere le etichette dell'asse y per visualizzare numeri piccoli (ad esempio .001). Ho impostato i valori minimo e massimo rispettivamente su .001 e .009 per l'asse y e sebbene il grafico sia graficamente corretto, le etichette dell'intervallo dell'asse y mostrano "0" o ".01". Immagino che questa sia una limitazione del controllo grafico nel toolkit 3.5 ma spero che manchi qualcosa. Ecco qualche esempio di codice:WPF Charting Toolkit Le etichette dell'asse y appaiono come zero per i piccoli numeri

XAML:

<Window x:Class="WpfChartApplication.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525" 
    xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"> 
<Grid> 
    <chartingToolkit:Chart Name="chart1"> 
     <chartingToolkit:LineSeries 
         Title="Rates" 
         ItemsSource="{Binding Rates}" 
         IndependentValueBinding="{Binding Time}" 
         DependentValueBinding="{Binding Value}" 
       > 
      <chartingToolkit:LineSeries.DependentRangeAxis> 
       <chartingToolkit:LinearAxis 
           Orientation="Y" 
           Title="Y Value" 
           ShowGridLines="True" 
         Maximum=".009" 
         Minimum=".001"/> 
      </chartingToolkit:LineSeries.DependentRangeAxis> 
     </chartingToolkit:LineSeries> 

     <chartingToolkit:Chart.Axes> 
      <chartingToolkit:LinearAxis Orientation="X" 
             Title="X Value" 
             ShowGridLines="True" 
             /> 
     </chartingToolkit:Chart.Axes> 
    </chartingToolkit:Chart> 
</Grid> 

E il codice dietro:

using System.Collections.Generic; 
    using System.Windows; 

namespace WpfChartApplication 
{ 
public partial class MainWindow : Window 
{ 


    public MainWindow() 
    { 
     InitializeComponent(); 

     var cVm = new ChartViewModel(); 
     chart1.DataContext = cVm; 
    } 
} 

public class ChartViewModel 
{ 
    public List<Rate> Rates { get; set; } 

    public ChartViewModel() 
    { 
     Rates = new List<Rate>(); 

     Rates.Add(new Rate(1, .001)); 
     Rates.Add(new Rate(2, .003)); 
     Rates.Add(new Rate(3, .001)); 
     Rates.Add(new Rate(4, .002)); 
     Rates.Add(new Rate(5, .001)); 
     Rates.Add(new Rate(6, .001)); 
     Rates.Add(new Rate(7, .003)); 
     Rates.Add(new Rate(8, .007)); 
     Rates.Add(new Rate(9, .009)); 
     Rates.Add(new Rate(10, .008)); 
    } 
} 

public class Rate 
{ 
    public Rate(int time, double value) 
    { 
     Time = time; 
     Value = value; 
    } 

    public int Time { get; set; } 
    public double Value { get; set; } 
} 
} 

risposta

6

è possibile cambiare lo stile dell'etichetta per ottenere l'effetto

<Style x:Key="NumericAxisLabelStyle" TargetType="{x:Type chartingToolkit:NumericAxisLabel}"> 
    <Setter Property="IsTabStop" Value="False" /> 
    <Setter Property="StringFormat" Value="{}{0:0.###}" /> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type chartingToolkit:NumericAxisLabel}"> 

     <TextBlock Text="{TemplateBinding FormattedContent}" /> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

<chartingToolkit:Chart Name="chart1"> 
    <chartingToolkit:LineSeries Title="Rates" 
           ItemsSource="{Binding Rates}" 
           IndependentValueBinding="{Binding Time}" 
           DependentValueBinding="{Binding Value}"> 
    <chartingToolkit:LineSeries.DependentRangeAxis> 
     <chartingToolkit:LinearAxis Orientation="Y" 
            Title="Y Value" 
            ShowGridLines="True" 
            AxisLabelStyle="{StaticResource NumericAxisLabelStyle}" 
            Maximum=".009" 
            Minimum=".001" /> 
    </chartingToolkit:LineSeries.DependentRangeAxis> 
    </chartingToolkit:LineSeries> 
    <chartingToolkit:Chart.Axes> 
    <chartingToolkit:LinearAxis Orientation="X" Title="X Value" ShowGridLines="True" /> 
    </chartingToolkit:Chart.Axes> 
</chartingToolkit:Chart> 

spero che questo aiuti. ..

+0

Sono sorpreso che questo non è il comportamento predefinito per il controllo grafico. Grazie per l'aiuto! –

+0

@senor_cardgage no probs :-) – punker76

Problemi correlati