Jump to content
Software FX Community

Zoom doesn't work with certain mount of DataPoints. Please help.


Ethankie

Recommended Posts

Dear Support Team,

I am evaluating the Chart Fx Wpf Trial(version 8.0.3581.26941). And With the data below zoom function stopped working(neither the scale of zoom correct nor can I adjust it with the zoom-scroll bar at the bottom of the chart).

It is the key feature we want from this product. Please help me figure out what's going on.To reproduce the problem, uncomment any row of the commented code eg: //new ChartTestData{Date = DateTime.Parse("1/9/2009 12:00:00 AM") , Price = 60.08, IsEstimated = false}.

Thanks very much.

Xaml:

 <Grid>
  <Grid.RowDefinitions>
  <RowDefinition Height="auto"/>
  <RowDefinition/>
  </Grid.RowDefinitions>
  <Button Content="Reset" Click="Button_Click"/>
  <cfx:Chart Margin="4,0" x:Name="chart1" Grid.Row="1">
  <cfx:Chart.Zoom>
  <cfx:ZoomArea Mode="Selection"/>
  </cfx:Chart.Zoom>
   
  <cfx:Chart.ConditionalAttributes>
  <cfx:ConditionalAttributes StrokeDashArray="1 2">
  <cfx:ConditionalAttributes.Condition>
   
  <cfx:DelegateCondition BindingPath="X" EvaluateCondition="DelegateCondition_EvaluateCondition"/>
  </cfx:ConditionalAttributes.Condition>

  </cfx:ConditionalAttributes>
  </cfx:Chart.ConditionalAttributes>
  <cfx:Chart.AxesX>
  <cfx:Axis>
  <cfx:Axis.Labels>
  <cfx:AxisLabelAttributes BindingPath="Date" Format="Date"/>
  </cfx:Axis.Labels>
  </cfx:Axis>
  </cfx:Chart.AxesX>
  <cfx:Chart.AxesY>
  <cfx:Axis>
  <cfx:Axis.Labels>
  <cfx:AxisLabelAttributes BindingPath="Price"/>
  </cfx:Axis.Labels>
  </cfx:Axis>
  </cfx:Chart.AxesY>

  </cfx:Chart>
  </Grid>

 

Code Behind:

 

using System;
using System.Collections.Generic;
using System.Windows;
using ChartFX.WPF;


namespace ChartFxEvalue2
{
  /// <summary>
  /// Interaction logic for MainWindow.xaml
  /// </summary>
  public partial class MainWindow : Window
  {
  public MainWindow()
  {
  InitializeComponent();
 
  this.chart1.Series.Clear();
  this.chart1.Refresh();
  this.chart1.Series.Add(new SeriesAttributes("Price")
{
ItemsSource = LoadData(),
Content = "Price",
Gallery = Gallery.Line,
StrokeThickness = 1, Marker = new MarkerAttributes{Visibility = Visibility.Collapsed}
});
  }


  private void DelegateCondition_EvaluateCondition(object sender, ConditionValueEventArgs args)
  {
  try
  {
  bool ret = ((ChartTestData)args.ConditionValue.DataItem).IsEstimated;
  args.Result = ret;

  }
  catch
  {
 
  }
  }

  private void Button_Click(object sender, RoutedEventArgs e)
  {
  this.chart1.Zoom.Mode = ZoomMode.Off;
  System.Threading.Thread.Sleep(100);
  this.chart1.Zoom.Mode = ZoomMode.Selection;
  }

  private static IEnumerable<ChartTestData> LoadData()
  {
  return new List<ChartTestData>
{
new ChartTestData{Date = DateTime.Parse("3/7/2008 12:00:00 AM") , Price = 100, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("3/14/2008 12:00:00 AM") , Price = 99.15, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("3/21/2008 12:00:00 AM") , Price = 98.81, IsEstimated = true},
  new ChartTestData{Date = DateTime.Parse("3/28/2008 12:00:00 AM") , Price = 101.95, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("4/4/2008 12:00:00 AM") , Price = 106.78, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("4/11/2008 12:00:00 AM") , Price = 103.98, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("4/18/2008 12:00:00 AM") , Price = 108.81, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("4/25/2008 12:00:00 AM") , Price = 110.08, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("5/2/2008 12:00:00 AM") , Price = 110.51, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("5/9/2008 12:00:00 AM") , Price = 109.49, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("5/16/2008 12:00:00 AM") , Price = 113.14, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("5/23/2008 12:00:00 AM") , Price = 109.24, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("5/30/2008 12:00:00 AM") , Price = 110.93, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("6/6/2008 12:00:00 AM") , Price = 108.31, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("6/13/2008 12:00:00 AM") , Price = 106.53, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("6/20/2008 12:00:00 AM") , Price = 104.24, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("6/27/2008 12:00:00 AM") , Price = 101.36, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("7/4/2008 12:00:00 AM") , Price = 98.14, IsEstimated = true},
  new ChartTestData{Date = DateTime.Parse("7/11/2008 12:00:00 AM") , Price = 96.44, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("7/18/2008 12:00:00 AM") , Price = 97.12, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("7/25/2008 12:00:00 AM") , Price = 96.95, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("8/1/2008 12:00:00 AM") , Price = 96.36, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("8/8/2008 12:00:00 AM") , Price = 96.95, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("8/15/2008 12:00:00 AM") , Price = 96.44, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("8/22/2008 12:00:00 AM") , Price = 96.02, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("8/29/2008 12:00:00 AM") , Price = 95.85, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("9/5/2008 12:00:00 AM") , Price = 90.25, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("9/12/2008 12:00:00 AM") , Price = 89.58, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("9/19/2008 12:00:00 AM") , Price = 89.41, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("9/26/2008 12:00:00 AM") , Price = 85.25, IsEstimated = false},



  new ChartTestData{Date = DateTime.Parse("10/3/2008 12:00:00 AM") , Price = 74.49, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("10/10/2008 12:00:00 AM") , Price = 61.36, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("10/17/2008 12:00:00 AM") , Price = 62.37, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("10/24/2008 12:00:00 AM") , Price = 54.58, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("10/31/2008 12:00:00 AM") , Price = 62.46, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("11/7/2008 12:00:00 AM") , Price = 60.42, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("11/14/2008 12:00:00 AM") , Price = 54.75, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("11/21/2008 12:00:00 AM") , Price = 49.15, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("11/28/2008 12:00:00 AM") , Price = 55.68, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("12/5/2008 12:00:00 AM") , Price = 53.81, IsEstimated = false},


  new ChartTestData{Date = DateTime.Parse("12/12/2008 12:00:00 AM") , Price = 56.78, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("12/19/2008 12:00:00 AM") , Price = 58.47, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("12/26/2008 12:00:00 AM") , Price = 57.71, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("1/2/2009 12:00:00 AM") , Price = 62.37, IsEstimated = false},


  //new ChartTestData{Date = DateTime.Parse("1/9/2009 12:00:00 AM") , Price = 60.08, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("1/16/2009 12:00:00 AM") , Price = 57.2, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("1/23/2009 12:00:00 AM") , Price = 55.85, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("1/30/2009 12:00:00 AM") , Price = 56.02, IsEstimated = false},


  //new ChartTestData{Date = DateTime.Parse("2/6/2009 12:00:00 AM") , Price = 59.92, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("2/13/2009 12:00:00 AM") , Price = 57.37, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("2/20/2009 12:00:00 AM") , Price = 53.47, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("2/27/2009 12:00:00 AM") , Price = 51.44, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("3/6/2009 12:00:00 AM") , Price = 47.8, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("3/13/2009 12:00:00 AM") , Price = 52.54, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("3/20/2009 12:00:00 AM") , Price = 53.81, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("3/27/2009 12:00:00 AM") , Price = 56.86, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("4/3/2009 12:00:00 AM") , Price = 59.83, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("4/10/2009 12:00:00 AM") , Price = 60.51, IsEstimated = true},
  //new ChartTestData{Date = DateTime.Parse("4/17/2009 12:00:00 AM") , Price = 61.61, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("4/24/2009 12:00:00 AM") , Price = 62.2, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("5/1/2009 12:00:00 AM") , Price = 63.39, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("5/8/2009 12:00:00 AM") , Price = 67.03, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("5/15/2009 12:00:00 AM") , Price = 64.41, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("5/22/2009 12:00:00 AM") , Price = 66.19, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("5/29/2009 12:00:00 AM") , Price = 69.07, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("6/5/2009 12:00:00 AM") , Price = 70.34, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("6/12/2009 12:00:00 AM") , Price = 70.76, IsEstimated = false},


  //new ChartTestData{Date = DateTime.Parse("6/19/2009 12:00:00 AM") , Price = 68.39, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("6/26/2009 12:00:00 AM") , Price = 68.81, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("7/3/2009 12:00:00 AM") , Price = 67.71, IsEstimated = true},
  //new ChartTestData{Date = DateTime.Parse("7/10/2009 12:00:00 AM") , Price = 66.19, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("7/17/2009 12:00:00 AM") , Price = 70.76, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("7/24/2009 12:00:00 AM") , Price = 74.32, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("7/31/2009 12:00:00 AM") , Price = 74.83, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("8/7/2009 12:00:00 AM") , Price = 75.76, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("8/14/2009 12:00:00 AM") , Price = 75.59, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("8/21/2009 12:00:00 AM") , Price = 77.12, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("8/28/2009 12:00:00 AM") , Price = 77.29, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("9/4/2009 12:00:00 AM") , Price = 77.2, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("9/11/2009 12:00:00 AM") , Price = 80.08, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("9/18/2009 12:00:00 AM") , Price = 81.19, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("9/25/2009 12:00:00 AM") , Price = 79.24, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("10/2/2009 12:00:00 AM") , Price = 77.71, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("10/9/2009 12:00:00 AM") , Price = 81.1, IsEstimated = false},



  //new ChartTestData{Date = DateTime.Parse("10/16/2009 12:00:00 AM") , Price = 82.88, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("10/23/2009 12:00:00 AM") , Price = 82.03, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("10/30/2009 12:00:00 AM") , Price = 78.14, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("11/6/2009 12:00:00 AM") , Price = 80.68, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("11/13/2009 12:00:00 AM") , Price = 82.46, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("11/20/2009 12:00:00 AM") , Price = 81.36, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("11/27/2009 12:00:00 AM") , Price = 81.19, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("12/4/2009 12:00:00 AM") , Price = 82.8, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("12/11/2009 12:00:00 AM") , Price = 82.29, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("12/18/2009 12:00:00 AM") , Price = 81.95, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("12/25/2009 12:00:00 AM") , Price = 83.98, IsEstimated = true},
  //new ChartTestData{Date = DateTime.Parse("1/1/2010 12:00:00 AM") , Price = 83.9, IsEstimated = true},
  //new ChartTestData{Date = DateTime.Parse("1/8/2010 12:00:00 AM") , Price = 86.19, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("1/15/2010 12:00:00 AM") , Price = 85.25, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("1/22/2010 12:00:00 AM") , Price = 81.86, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("1/29/2010 12:00:00 AM") , Price = 80.08, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("2/5/2010 12:00:00 AM") , Price = 79.07, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("2/12/2010 12:00:00 AM") , Price = 80.59, IsEstimated = false},


  //new ChartTestData{Date = DateTime.Parse("2/19/2010 12:00:00 AM") , Price = 82.54, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("2/26/2010 12:00:00 AM") , Price = 81.78, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("3/5/2010 12:00:00 AM") , Price = 85.25, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("3/12/2010 12:00:00 AM") , Price = 86.19, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("3/19/2010 12:00:00 AM") , Price = 86.61, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("3/26/2010 12:00:00 AM") , Price = 86.69, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("4/2/2010 12:00:00 AM") , Price = 88.22, IsEstimated = true},
  //new ChartTestData{Date = DateTime.Parse("4/9/2010 12:00:00 AM") , Price = 89.41, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("4/16/2010 12:00:00 AM") , Price = 88.98, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("4/23/2010 12:00:00 AM") , Price = 90.08, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("4/30/2010 12:00:00 AM") , Price = 87.63, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("5/7/2010 12:00:00 AM") , Price = 80.08, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("5/14/2010 12:00:00 AM") , Price = 82.12, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("5/21/2010 12:00:00 AM") , Price = 78.39, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("5/28/2010 12:00:00 AM") , Price = 79.58, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("6/4/2010 12:00:00 AM") , Price = 78.31, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("6/11/2010 12:00:00 AM") , Price = 80.93, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("6/18/2010 12:00:00 AM") , Price = 83.39, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("6/25/2010 12:00:00 AM") , Price = 81.44, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("7/2/2010 12:00:00 AM") , Price = 77.88, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("7/9/2010 12:00:00 AM") , Price = 81.44, IsEstimated = false},


  //new ChartTestData{Date = DateTime.Parse("7/16/2010 12:00:00 AM") , Price = 81.1, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("7/23/2010 12:00:00 AM") , Price = 84.07, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("7/30/2010 12:00:00 AM") , Price = 83.39, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("8/6/2010 12:00:00 AM") , Price = 85.34, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("8/13/2010 12:00:00 AM") , Price = 82.29, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("8/20/2010 12:00:00 AM") , Price = 82.54, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("8/27/2010 12:00:00 AM") , Price = 82.2, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("9/3/2010 12:00:00 AM") , Price = 85.25, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("9/10/2010 12:00:00 AM") , Price = 85.85, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("9/17/2010 12:00:00 AM") , Price = 87.97, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("9/24/2010 12:00:00 AM") , Price = 90.25, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("10/1/2010 12:00:00 AM") , Price = 90.93, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("10/8/2010 12:00:00 AM") , Price = 92.03, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("10/15/2010 12:00:00 AM") , Price = 93.47, IsEstimated = false},
  //new ChartTestData{Date = DateTime.Parse("10/22/2010 12:00:00 AM") , Price = 92.97, IsEstimated = false},
  new ChartTestData{Date = DateTime.Parse("10/29/2010 12:00:00 AM") , Price = 93.31, IsEstimated = true}
};
  }
  }
}
 

 

 ChartTestData:

public class ChartTestData
  {
  /// <summary>
  /// Gets or sets the date.
  /// </summary>
  /// <value>The date.</value>
  public DateTime Date { get; set; }
  /// <summary>
  /// Gets or sets the price.
  /// </summary>
  /// <value>The price.</value>
  public double? Price { get; set; }
  /// <summary>
  /// Gets or sets a value indicating whether this instance is estimated.
  /// </summary>
  /// <value>
  ///   <c>true</c> if this instance is estimated; otherwise, <c>false</c>.
  /// </value>
  public bool IsEstimated { get; set; }
  }

 

 

Link to comment
Share on other sites

I uncommented the line for 1/9/2009 but I do not see anything wrong in the zoomed chart.

Do I have to zoom a specific portion of the chart to see the issue?Can you provide additional details (description, screenshot) of the differences with that line commented/uncommented?Do you get the same result if you do not set the Zoom.Mode in XAML but instead just set it to selection in a button?

JuanC

Link to comment
Share on other sites

BTW, binding the AxisY.Labels is not necessary so you should feel free to comment/remove the AxesY part from the XAML (unless you are setting other properties in the real app in which case I would recommend removing the BindingPath="Price" assignment from the Y axis).

JuanC

Link to comment
Share on other sites

Hi JuanC,

Thanks for your reply. I have tried to invoke the zoom funtion and set it to ZoomMode.Selection by clicking a button and I also removed the binding for Aixes Y. But it still doesn't work.  Please take a look of the screen shots below:

 Before uncommenting the line and zoom works:

Posted Image

 

After uncommenting the line(or actually any commentted line), zoom doesn't work:

Posted Image

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...