コード例 #1
0
 private void SetData()
 {
     _titles.Clear();
     _values.Clear();
     if (!string.IsNullOrEmpty(TitleMemberPath) && !string.IsNullOrEmpty(ValueMemberPath))
     {
         var titleEval = new BindingEvaluator(TitleMemberPath);
         var valueEval = new BindingEvaluator(ValueMemberPath);
         foreach (var dataItem in DataSource)
         {
             _titles.Add(titleEval.Eval(dataItem).ToString());
             _values.Add((double)valueEval.Eval(dataItem));
             if (dataItem is INotifyPropertyChanged)
             {
                 (dataItem as INotifyPropertyChanged).PropertyChanged -= OnDataSourceItemPropertyChanged;
                 (dataItem as INotifyPropertyChanged).PropertyChanged += OnDataSourceItemPropertyChanged;
             }
         }
         _total = _values.Sum();
     }
 }
コード例 #2
0
ファイル: ColumnChart.cs プロジェクト: zmtzawqlp/UWP-master
        void UpdateGrid()
        {
            if (_root == null || ItemsSource == null)
            {
                return;
            }
            _root.Children.Clear();
            _root.ColumnDefinitions.Clear();
            _independentValues.Clear();
            _dependentValues.Clear();
            BindingEvaluator independentBinding = new BindingEvaluator(IndependentValuePath);
            BindingEvaluator dependentBinding   = new BindingEvaluator(DependentValuePath);

            int column = 0;

            foreach (var item in ItemsSource)
            {
                var independentValue = independentBinding.Eval(item).ToString();
                var dependentValue   = (long)dependentBinding.Eval(item);
                _dependentValues.Add(dependentValue);
                _root.ColumnDefinitions.Add(new ColumnDefinition()
                {
                    Width = new GridLength(1, GridUnitType.Star)
                });

                TextBlock independentTB = new TextBlock();
                independentTB.Text                = independentValue;
                independentTB.FontSize            = IndependentValueFontSize;
                independentTB.Foreground          = IndependentValueBrush;
                independentTB.VerticalAlignment   = VerticalAlignment.Center;
                independentTB.HorizontalAlignment = HorizontalAlignment.Center;
                independentTB.SetValue(Grid.RowProperty, 3);
                independentTB.SetValue(Grid.ColumnProperty, column++);
                _root.Children.Add(independentTB);
            }
            Rectangle rc = new Rectangle();

            rc.Fill   = GridLineBrush;
            rc.Height = 1;
            rc.SetValue(Grid.RowProperty, 1);
            rc.SetValue(Grid.ColumnSpanProperty, column);
            _root.Children.Add(rc);

            var  min  = _dependentValues.Min();
            var  max  = _dependentValues.Max();
            long temp = 0;

            if (min >= 0 && max >= 0)
            {
                temp = max;
            }
            else if (min < 0 && max >= 0)
            {
                temp = max - min;
            }
            else if (max < 0)
            {
                temp = -min;
            }

            var height = (this.ActualHeight - 1 - 30) / temp;


            for (int i = 0; i < _dependentValues.Count; i++)
            {
                var       dependentValue = _dependentValues[i];
                TextBlock dependentTB    = new TextBlock();
                dependentTB.Text                = dependentValue.ToString();
                dependentTB.FontSize            = DependentValueFontSize;
                dependentTB.Foreground          = dependentValue >= 0 ? PositiveValueBrush : NegativeValueBrush;
                dependentTB.VerticalAlignment   = dependentValue > 0 ? VerticalAlignment.Top : VerticalAlignment.Bottom;
                dependentTB.HorizontalAlignment = HorizontalAlignment.Center;
                dependentTB.SetValue(Grid.RowProperty, dependentValue > 0 ? 2 : 0);
                dependentTB.SetValue(Grid.ColumnProperty, i);

                Rectangle dependentRC = new Rectangle();
                dependentRC.Fill              = dependentValue >= 0 ? PositiveValueBrush : NegativeValueBrush;
                dependentRC.Height            = Math.Abs(height * dependentValue);
                dependentRC.Margin            = new Thickness(20, 0, 20, 0);
                dependentRC.VerticalAlignment = dependentValue <= 0 ? VerticalAlignment.Top : VerticalAlignment.Bottom;
                dependentRC.SetValue(Grid.RowProperty, dependentValue <= 0 ? 2 : 0);
                dependentRC.SetValue(Grid.ColumnProperty, i);
                _root.Children.Add(dependentRC);
                _root.Children.Add(dependentTB);
            }
        }
コード例 #3
0
ファイル: ColumnChart.cs プロジェクト: GJian/UWP-master
        void UpdateGrid()
        {
            if (_root == null || ItemsSource == null)
            {
                return;
            }
            _root.Children.Clear();
            _root.ColumnDefinitions.Clear();
            _independentValues.Clear();
            _dependentValues.Clear();
            BindingEvaluator independentBinding = new BindingEvaluator(IndependentValuePath);
            BindingEvaluator dependentBinding = new BindingEvaluator(DependentValuePath);

            int column = 0;
            foreach (var item in ItemsSource)
            {
                var independentValue = independentBinding.Eval(item).ToString();
                var dependentValue = (long)dependentBinding.Eval(item);
                _dependentValues.Add(dependentValue);
                _root.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });

                TextBlock independentTB = new TextBlock();
                independentTB.Text = independentValue;
                independentTB.FontSize = IndependentValueFontSize;
                independentTB.Foreground = IndependentValueBrush;
                independentTB.VerticalAlignment = VerticalAlignment.Center;
                independentTB.HorizontalAlignment = HorizontalAlignment.Center;
                independentTB.SetValue(Grid.RowProperty, 3);
                independentTB.SetValue(Grid.ColumnProperty, column++);
                _root.Children.Add(independentTB);
            }
            Rectangle rc = new Rectangle();
            rc.Fill = GridLineBrush;
            rc.Height = 1;
            rc.SetValue(Grid.RowProperty, 1);
            rc.SetValue(Grid.ColumnSpanProperty, column);
            _root.Children.Add(rc);

            var min = _dependentValues.Min();
            var max = _dependentValues.Max();
            long temp = 0;
            if (min >= 0 && max >= 0)
            {
                temp = max;
            }
            else if (min < 0 && max >= 0)
            {
                temp = max - min;
            }
            else if (max < 0)
            {
                temp = -min;
            }

            var height = (this.ActualHeight - 1 - 30) / temp;


            for (int i = 0; i < _dependentValues.Count; i++)
            {
                var dependentValue = _dependentValues[i];
                TextBlock dependentTB = new TextBlock();
                dependentTB.Text = dependentValue.ToString();
                dependentTB.FontSize = DependentValueFontSize;
                dependentTB.Foreground = dependentValue >= 0 ? PositiveValueBrush : NegativeValueBrush;
                dependentTB.VerticalAlignment = dependentValue > 0 ? VerticalAlignment.Top : VerticalAlignment.Bottom;
                dependentTB.HorizontalAlignment = HorizontalAlignment.Center;
                dependentTB.SetValue(Grid.RowProperty, dependentValue > 0 ? 2 : 0);
                dependentTB.SetValue(Grid.ColumnProperty, i);

                Rectangle dependentRC = new Rectangle();
                dependentRC.Fill = dependentValue >= 0 ? PositiveValueBrush : NegativeValueBrush;
                dependentRC.Height = Math.Abs(height * dependentValue);
                dependentRC.Margin = new Thickness(20, 0, 20, 0);
                dependentRC.VerticalAlignment = dependentValue <= 0 ? VerticalAlignment.Top : VerticalAlignment.Bottom;
                dependentRC.SetValue(Grid.RowProperty, dependentValue <= 0 ? 2 : 0);
                dependentRC.SetValue(Grid.ColumnProperty, i);
                _root.Children.Add(dependentRC);
                _root.Children.Add(dependentTB);

            }
        }