【问题标题】:Tick marks for X-axis in WPF toolkit chartWPF 工具包图表中 X 轴的刻度线
【发布时间】:2011-02-03 21:18:01
【问题描述】:
<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>

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 轴刻度线。有人可以请教吗?

【问题讨论】:

标签: c# wpf charts toolkit


【解决方案1】:

您可以像这样隐藏整个 X 轴:

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

将其添加到您的 charting:LineSeries 元素或代码中:

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

【讨论】:

  • 非常感谢您的提示!不幸的是,我正在以编程方式创建系列。我尝试以编程方式设置样式。但是 ls.IndependentAxis 在上面的代码中返回 null 并且我无法在代码中模仿上面的 XAML。
  • 感谢示例代码。我试过了,但是当我在包含图表的窗口上调用 Show() 时出现以下异常:“无法使用分配的独立轴。这可能是由于轴的方向属性未设置。”
  • 由于 X 轴上有字符串,因此请使用 CategoryAxis 而不是 LinearAxis
【解决方案2】:

所有系列都共享同一个 X 轴,对吧?因此您可以添加一个通用的 X 轴(如果您使用字符串独立值,建议的类别会更好)并将 AxisLabelStyle 设置为显示或不显示内容模板的内容样式。我使用此解决方案,并且系列添加的运行时将使用您添加的现有 X 轴。

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2015-03-24
    • 2014-08-16
    相关资源
    最近更新 更多