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);
        }
Exemplo n.º 3
0
        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();
        }