internal static IEnumerable<XamDataChart> BuildChartElements(FlightAnalysisViewModel viewModel, IEnumerable<string> parameterIDs, ref FAChartModel faChartModel) { List<XamDataChart> charts = new List<XamDataChart>(); IEnumerable<AxisDataBindingObject> bindingObjs = CalculateBindingObjects(viewModel, parameterIDs); foreach (var bd in bindingObjs) { var chartCtrl = BindingChartUIFactory.CreateOneChart(bd, ref faChartModel); if (chartCtrl != null) { if (chartCtrl != null) charts.Add(chartCtrl); //TODO: custom chart event handle: } } return charts; }
public static XamDataChart CreateOneChart( AxisDataBindingObject bindingObj, ref FAChartModel faChartModel) { FAChartSubModel model = bindingObj.ToFAChartSubModel(); if (faChartModel.SubModels.ContainsKey(bindingObj.ParameterID)) { faChartModel.SubModels[bindingObj.ParameterID] = model; } else { faChartModel.SubModels.Add(bindingObj.ParameterID, model); } Infragistics.Controls.Charts.Legend legend = new Legend() { Margin = new Windows.UI.Xaml.Thickness(10), Opacity = 1, VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top, HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Right }; Infragistics.Controls.XamDock.SetEdge(legend, Infragistics.Controls.DockEdge.InsideRight); XamDataChart chart = new XamDataChart() { Margin = new Windows.UI.Xaml.Thickness(0, 25, 0, 25) }; chart.Legend = legend; chart.DataContext = model; return bindingObj.AssignSimpleLineChart(model, chart); }
private void OnViewModelChanged() { if (this.m_faChartModel == null && this.m_viewModel != null) { this.m_faChartModel = m_viewModel.GetFAChartModel(); } if (m_faChartModel == null) return; //先分析几个图,一个、两个、三个的做法不一样 //一个:全屏Grid //两个:二分屏幕上下Grid //三个或更多:三到n行Grid,行高固定 this.grdHost.Children.Clear(); this.grdHost.RowDefinitions.Clear(); //只需要清空Children和行,列从没设置过 IEnumerable<XamDataChart> chartElements = this.CreateElements(); IEnumerable<Infragistics.Controls.XamDock> wrapDocks = this.CreateDockElements(chartElements); if (chartElements != null) { int items = chartElements.Count(); if (items == 1) { var chart = wrapDocks.First();// chartElements.First(); if (chart != null) this.grdHost.Children.Add(chart); } else if (items == 2) { this.grdHost.RowDefinitions.Add(new RowDefinition()); this.grdHost.RowDefinitions.Add(new RowDefinition()); var chart1 = wrapDocks.ElementAt(0);//chartElements.ElementAt(0); var chart2 = wrapDocks.ElementAt(1);//chartElements.ElementAt(1); if (chart1 != null) this.grdHost.Children.Add(chart1); if (chart2 != null) { Grid.SetRow(chart2, 1); this.grdHost.Children.Add(chart2); } } else if (items > 2) { for (int i = 0; i < items; i++) { this.grdHost.RowDefinitions.Add( new RowDefinition() { Height = new GridLength(BindingChartUIFactory.MultiItemsRowHeight, GridUnitType.Pixel) } ); var child = wrapDocks.ElementAt(i);//chartElements.ElementAt(i); Grid.SetRow(child, i); this.grdHost.Children.Add(child); } } //items == 0 那就return } this.m_loadingCharts = chartElements; this.AttachDoubleClicked(); }