Jump to content
Software FX Community

srickenb

Members
  • Posts

    13
  • Joined

  • Last visited

srickenb's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Please find attached a repro case. Do the following - Click "Add Point" - Select Tab2 - Click "Add Point" - Select Tab1 - Click "Add Point" In additon, the application shows also a few more unexpected effects: - Charts are not updated, when in an unselected tab and show stale data when they reaplear in the selected tab - Legends of pie charts disapear when data changes (Therefore, the collapsed/visible statements) Regards and thanks Stefan
  2. We have a very similar effect and get the same exception: Index was outside the bounds of the array. at ChartFX.WPF.Internal.AttributesResolver.b(Int32 A_0, Int32 A_1) at ChartFX.WPF.Axis.ChartFX.WPF.Internal.ILegendItemGenerator.BuildNext(LogicalItemCollection items, Chart chart, Int32& index, LegendItemAttributesResolved resolved, ResolvedAttributes attributes, Object target, Object& extraData) at ChartFX.WPF.LegendBox.a(ILegendItemGenerator A_0, LogicalItemCollection A_1, LegendItemAttributesResolved A_2) at ChartFX.WPF.LegendBox.a() at ChartFX.WPF.LegendBox.OnMeasure() at ChartFX.WPF.BorderContent.MeasureOverride(Size availableSize) at System.Windows.FrameworkElement.MeasureCore(Size availableSize) at System.Windows.UIElement.Measure(Size availableSize) at ChartFX.WPF.Controls.SpacingDockPanel.MeasureOverride(Size availableSize) at System.Windows.FrameworkElement.MeasureCore(Size availableSize) See the attached application which reproduces the problem. Do the following: - Click "Add Point" - Select Tab2 - Click "Add Point" - Select Tab1 - Click "Add Point" In additon, the application shows a few more unexpected effects: - Charts are not updated, when in an unselected tab and show stale data when they reapear in the selected tab - Legends of pie charts disapear when data changes (Therefore, the collapsed/visible statements) Regards and thanks Stefan
  3. Thank you, that should help us to cope with the situation! There remains one thing to make sure: Once we've bought the final license, can we distribute our applicaton with the older version without getting an "expired" at the customer? In other words, are we free to distribute any version (even the Beta) to our customers and not running into the expired problem? Can you explain briefly where and what the license file is and what we need to make sure in order to achieve a smooth transition to deployment and dstribution with the freedom of choosing older versions? We investigated a little further and found out that the instable situation arises from reassigning the ItemsSource of a chart, regardless whether this is done by binding or direct assignment (in C# in our case). If an immediate Refresh() is done after assigning, the situation seems to improve considerably. As we want to go forward with the latest version as soon as possible, how can we find out when the problem is solved? Regards Stefan
  4. We've just applied the hotfix. However, the library still crashes in several places when tabs are switched in the manner I've described above. As we are a software provider company for the financial industry and your library is used in a major project with a tight deadline, this puts as in a very difficult situation. If it is possible to get the stable version against we have programmed (8.0.3309.21029) without the "expired" note we could survive until the current problem is solved. Of course we would support you in helping to fix the problem. Please help us! Thanks Stefan
  5. Just seen that the trial version on your site is still 8.0.3422.28509. Can we apply the hotfix to the trial, too? Thanks Stefan
  6. Thank you so much for answering so quickly. It is indeed Version 8.0.3422.28509. We are currently using the trial and want to buy it when everything is fine. Do I get the trial with the hotfix when we follow your link? Thanks again Stefan
  7. We've finally changed from the last Beta version to the final version of WPF Chart. Having not touched our application code we get now a very nasty exception. It occurs when visual parts holding charts (e.g.TabItems) are being switched and it seems to be a problem with sizing functions in the framework. As our code is not involved wen the exception is thrown it is impossible to track the problem down. charts are initially shown correctly. Thank you for your help Stefan The error message is as follows: "Specified index is out of range or child at index is null. Do not call this method if VisualChildrenCount returns zero, indicating that the Visual has no children.\r\nParameter name: index\r\nActual value was 0." And the stack trace is as follows: at System.Windows.FrameworkElement.GetVisualChild(Int32 index) at System.Windows.Media.Visual.InternalGet2DOr3DVisualChild(Int32 index) at System.Windows.Media.VisualTreeHelper.GetChild(DependencyObject reference, Int32 childIndex) at ChartFX.WPF.Animation.SeriesAnimation.ChartFX.WPF.IAnimation.Attach(FrameworkElement owner, Object oldItem, Object newItem, AnimationFlags flags) at ChartFX.WPF.Internal.PlotAreaCore.b(LogicalItemCollection A_0, LogicalItemCollection A_1, PaintMark A_2) at ChartFX.WPF.Internal.PlotAreaCore.a(LogicalItemCollection A_0, LogicalItemCollection A_1, PaintMark A_2) at ChartFX.WPF.Internal.PlotAreaCore.a(Double A_0, Double A_1, Boolean A_2) at ChartFX.WPF.Internal.PlotAreaCore.b(Double A_0, Double A_1, Boolean A_2) at ChartFX.WPF.Internal.PlotAreaCore.a(RenderStyles A_0, Double A_1, Double A_2) at ChartFX.WPF.Chart.a(RenderStyles A_0) at ChartFX.WPF.Chart.i(Boolean A_0) at ChartFX.WPF.Chart.MeasureOverride(Size constraint) at System.Windows.FrameworkElement.MeasureCore(Size availableSize) at System.Windows.UIElement.Measure(Size availableSize) at System.Windows.ContextLayoutManager.UpdateLayout() at System.Windows.UIElement.UpdateLayout() at System.Windows.Controls.TabItem.OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs e) at System.Windows.UIElement.OnPreviewGotKeyboardFocusThunk(Object sender, KeyboardFocusChangedEventArgs e) at System.Windows.Input.KeyboardFocusChangedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) at System.Windows.Input.InputManager.ProcessStagingArea() at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) at System.Windows.Input.KeyboardDevice.TryChangeFocus(DependencyObject newFocus, IKeyboardInputProvider keyboardInputProvider, Boolean askOld, Boolean askNew, Boolean forceToNullIfFailed) at System.Windows.Input.KeyboardDevice.Focus(DependencyObject focus, Boolean askOld, Boolean askNew) at System.Windows.Input.KeyboardDevice.Focus(IInputElement element) at System.Windows.UIElement.Focus() at System.Windows.Controls.TabItem.SetFocus() at System.Windows.Controls.TabItem.OnMouseLeftButtonDown(MouseButtonEventArgs e) at System.Windows.UIElement.OnMouseLeftButtonDownThunk(Object sender, MouseButtonEventArgs e) at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) at System.Windows.UIElement.CrackMouseButtonEventAndReRaiseEvent(DependencyObject sender, MouseButtonEventArgs e) at System.Windows.UIElement.OnMouseDownThunk(Object sender, MouseButtonEventArgs e) at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) at System.Windows.Input.InputManager.ProcessStagingArea() at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter) at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.Run() at System.Windows.Application.RunDispatcher(Object ignore) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run(Window window) at System.Windows.Application.Run() at SCSFContrib.CompositeUI.WPF.ApplicationShellApplication`2.Start() at Microsoft.Practices.CompositeUI.CabApplication`1.Run() at WPFCABShell.Shell.Entry.Main() in C:\Users\srickenb\Documents\Visual Studio 2008\Projects\PMwpf2\PMwpf\Shell\Shell\Entry.cs:line 51 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
  8. srickenb

    License

    I've just seen that the beta license will run out in 15 days. This will unfortunately fall exactly on the first week in May when I'm seeing many customers and need the library up and running. How can I make sure that I have working charts by then? Can I just apply a go live license? Can I prolong the beta? Thank you, Stefan
  9. It's getting a bit difficult now. I use the Smart Client framework WPFCAB - a full port of CAB to WPF and update several charts in an event subscription. The thread which does the work is the user interface thread. As to how CAB does all the event mapping to .net I cannot say. Kind regards, Stefan ==> The event gets fired : public void updateQuant() { if (IsReadyForQuant) { WorkItem.RootWorkItem.EventTopics[businessEntities. Constants.PortfolioQuantChanged].Fire( this, new EventArgs<FinancePortfolio>(this), null, PublicationScope.Global); } } ==> and triggers a couple of charts to be redrawn with new data: [EventSubscription(BusinessEntities.Constants.PortfolioQuantChanged, ThreadOption.UserInterface)]public void drawReturnChart(object sender, EventArgs<FinancePortfolio> portfolio) { ....} [EventSubscription(BusinessEntities.Constants.PortfolioQuantChanged, ThreadOption.UserInterface)]public void drawNAVChart(object sender, EventArgs<FinancePortfolio> portfolio) { .... }
  10. It's getting a bit difficult now. I use the Smart Client framework WPFCAB - a full port of CAB to WPF and update several charts in an event subscription. The thread which does the work is the user interface thread. As to how CAB does all the event mapping to .net I cannot say. Kind regards, Stefan ==> The event gets fired : public void updateQuant() { if (IsReadyForQuant) { WorkItem.RootWorkItem.EventTopics[businessEntities. Constants.PortfolioQuantChanged].Fire( this, new EventArgs<FinancePortfolio>(this), null, PublicationScope.Global); } } ==> and triggers a couple of charts to be redrawn with new data: [EventSubscription(BusinessEntities.Constants.PortfolioQuantChanged, ThreadOption.UserInterface)]public void drawReturnChart(object sender, EventArgs<FinancePortfolio> portfolio) { ....} [EventSubscription(BusinessEntities.Constants.PortfolioQuantChanged, ThreadOption.UserInterface)]public void drawNAVChart(object sender, EventArgs<FinancePortfolio> portfolio) { .... }
  11. Thanks for answering so quickly. Please find further down the code I use. An interesting point: if I do a refresh at the end of the data assignment in the presenter class then the chart gets drawn without the problem : View.fxVamiChart.Refresh(); <UserControl.Resources> ... <report:FXchartSeries x:Key="vamiChartData"/> </UserControl.Resources> ... <ChartFX:Chart Name ="fxVamiChart" Grid.Row="0" Grid.Column="0" Width="500" Height="340" ItemsSource="{Binding Source={StaticResource vamiChartData}}" Gallery="Line"> <ChartFX:Chart.Titles> <ChartFX:Title FontSize="16" Foreground="Black">value added monthly index (VAMI)</ChartFX:Title> </ChartFX:Chart.Titles> <ChartFX:Chart.AxisY> <ChartFX:Axis Title="" > <ChartFX:Axis.Grids> <ChartFX:Grids Minor="{x:Null}"> <ChartFX:Grids.Major> <ChartFX:GridLine Stroke="LightGray" Visibility="Visible"/> </ChartFX:Grids.Major> </ChartFX:Grids> </ChartFX:Axis.Grids> </ChartFX:Axis> </ChartFX:Chart.AxisY> <ChartFX:Chart.Series> <ChartFX:SeriesAttributes ToolTips="{x:Null}" BindingPath="Val" > <ChartFX:SeriesAttributes.Marker> <ChartFX:MarkerAttributes Stroke="{x:Null}" Visibility="Hidden" /> </ChartFX:SeriesAttributes.Marker> </ChartFX:SeriesAttributes> </ChartFX:Chart.Series> <ChartFX:Chart.AxisX> <ChartFX:Axis Title="Time"> <ChartFX:Axis.Grids> <ChartFX:Grids Minor="{x:Null}" > <ChartFX:Grids.Major> <ChartFX:GridLine Stroke="LightGray" Visibility="Hidden" /> </ChartFX:Grids.Major> </ChartFX:Grids> </ChartFX:Axis.Grids> <ChartFX:Axis.Labels> <ChartFX:AxisLabelAttributes BindingPath="Cat" Angle="90" /> </ChartFX:Axis.Labels> </ChartFX:Axis> </ChartFX:Chart.AxisX> </ChartFX:Chart> ===> In the code-behind class (View) public FXchartSeries ChartVAMI { get { return (FXchartSeries)this.FindResource("vamiChartData"); } } ===> In the presenter class View.ChartVAMI.Clear(); View.ChartVAMI.Add(new Reporting.Point { Cat = dates[0].ToString("MMM yy"), Val = 100 }); for (int i = 0; i < performance.Index.Length; i++) { View.ChartVAMI.Add(new Reporting.Point { Cat = dates[i + 1].ToString("MMM yy"), Val = 100 * performance.Index }); } ===> The Reporting.Point class public class Point { public double Val { get; set; } public string Cat { get; set; } public string Tx { get; set; } public double X { get; set; } public DateTime Time { get; set; } }
  12. The graph and gridlines often don't match with the labels on the y-axis. This seems to be dependent on the values and once a zoom and un-zoom of the whole application window is done the chart mostly gets redrawn without the problem. The problem exist with line and bar charts. Is there a workaround for this?
×
×
  • Create New...