Beispiel #1
0
        public ConditionalFormatView(Cell bindingCell)
        {
            Margin            = new Thickness(1.0);
            UseLayoutRounding = true;
            _bindingCell      = bindingCell;
            _axisCanvas       = new Canvas();
            Line line = new Line();

            line.StrokeThickness = 1.0;
            line.StrokeDashArray = new DoubleCollection {
                2.0, 1.0
            };
            _axisLine = line;
            _axisCanvas.Children.Add(_axisLine);
            Children.Add(_axisCanvas);
            _databarObject    = null;
            _dataBarRectangle = new Rectangle();
            _dataBarRectangle.UseLayoutRounding = true;
            Children.Add(_dataBarRectangle);
            _dataBarBackground = new LinearGradientBrush();
            GradientStop stop = new GradientStop();

            stop.Color           = Colors.Transparent;
            stop.Offset          = 0.0;
            _cachedGradientStart = stop;
            _dataBarBackground.GradientStops.Add(_cachedGradientStart);
            GradientStop stop2 = new GradientStop();

            stop2.Color        = Colors.Transparent;
            stop2.Offset       = 0.0;
            _cachedGradientEnd = stop2;
            _dataBarBackground.GradientStops.Add(_cachedGradientEnd);
            GradientStop stop3 = new GradientStop();

            stop3.Color  = Colors.Transparent;
            stop3.Offset = 0.0;
            _cachedGradientTransparentEnd = stop3;
            _dataBarBackground.GradientStops.Add(_cachedGradientTransparentEnd);
            _dataBarBackground.EndPoint = new Point(1.0, 0.0);
            _dataBarRectangle.Fill      = _dataBarBackground;
            _iconObject                      = null;
            _imageContainer                  = new Border();
            _imageContainer.Style            = null;
            _cachedImage                     = new Image();
            _cachedImage.HorizontalAlignment = HorizontalAlignment.Left;
            _imageContainer.Child            = _cachedImage;
        }
Beispiel #2
0
        public async void SetIconObject(IconDrawingObject iconObject, float zoomFactor, Cell bindingCell)
        {
            if (!object.Equals(_iconObject, iconObject))
            {
                if (iconObject != null)
                {
                    _cachedImage.Source = await ConditionalFormatIcons.GetIconSource(iconObject.IconSetType, iconObject.IndexOfIcon);
                }
                else
                {
                    ClearIcon();
                }
                _iconObject = iconObject;
                InvalidateMeasure();
                InvalidateArrange();
            }
            if ((_iconObject != null) && (_cachedImage != null))
            {
                HorizontalAlignment left = HorizontalAlignment.Left;
                if (_iconObject.ShowIconOnly)
                {
                    switch (bindingCell.ActualHorizontalAlignment)
                    {
                    case CellHorizontalAlignment.Center:
                        left = HorizontalAlignment.Center;
                        break;

                    case CellHorizontalAlignment.Right:
                        left = HorizontalAlignment.Right;
                        break;
                    }
                }
                _cachedImage.HorizontalAlignment = left;
                VerticalAlignment alignment2 = bindingCell.ActualVerticalAlignment.ToVerticalAlignment();
                _cachedImage.VerticalAlignment = alignment2;
            }
            if (_cachedZoomFactor != zoomFactor)
            {
                _cachedImage.Width  = (double)(16f * zoomFactor);
                _cachedImage.Height = (double)(16f * zoomFactor);
                _cachedZoomFactor   = zoomFactor;
                InvalidateMeasure();
                InvalidateArrange();
            }
        }
Beispiel #3
0
        //*** CellsPanel.Measure -> RowsLayer.Measure -> RowItem.UpdateChildren -> 行列改变时 CellItem.UpdateChildren -> RowItem.Measure -> CellItem.Measure ***//

        public void UpdateChildren()
        {
            // 刷新绑定的Cell
            int row    = OwnRow.Row;
            int column = Column;

            if (CellLayout != null)
            {
                row    = CellLayout.Row;
                column = CellLayout.Column;
            }
            BindingCell = OwnRow.OwnPanel.CellCache.GetCachedCell(row, column);
            if (BindingCell == null)
            {
                return;
            }

            Background = BindingCell.ActualBackground;
            var       excel = Excel;
            Worksheet sheet = BindingCell.Worksheet;

            // 迷你图
            Sparkline sparkline = sheet.GetSparkline(row, column);

            if (_sparkInfo != sparkline)
            {
                SparkLine = sparkline;
                SynSparklineView();
            }

            // 收集所有DrawingObject
            List <DrawingObject> list = new List <DrawingObject>();

            DrawingObject[] objArray = sheet.GetDrawingObject(row, column, 1, 1);
            if ((objArray != null) && (objArray.Length > 0))
            {
                list.AddRange(objArray);
            }

            IDrawingObjectProvider drawingObjectProvider = DrawingObjectManager.GetDrawingObjectProvider(excel);

            if (drawingObjectProvider != null)
            {
                DrawingObject[] objArray2 = drawingObjectProvider.GetDrawingObjects(sheet, row, column, 1, 1);
                if ((objArray2 != null) && (objArray2.Length > 0))
                {
                    list.AddRange(objArray2);
                }
            }

            _dataBarObject       = null;
            _iconObject          = null;
            _customDrawingObject = null;
            if (list.Count > 0)
            {
                foreach (DrawingObject obj in list)
                {
                    if (obj is DataBarDrawingObject bar)
                    {
                        _dataBarObject = bar;
                    }
                    else if (obj is IconDrawingObject icon)
                    {
                        _iconObject = icon;
                    }
                    else if (obj is CustomDrawingObject cust)
                    {
                        _customDrawingObject = cust;
                    }
                }
            }

            bool noBarIcon = SynContitionalView();
            bool noCust    = SynCustomDrawingObjectView();

            if (sparkline == null && noBarIcon && noCust && !string.IsNullOrEmpty(BindingCell.Text))
            {
                _tb.Text = BindingCell.Text;
                ApplyStyle();
            }
            else
            {
                _tb.ClearValue(TextBlock.TextProperty);
            }
            SynStrikethroughView();

#if UWP || WASM
            // 手机上体验不好
            if (!excel.IsTouching)
            {
                FilterButtonInfo info = excel.GetFilterButtonInfo(row, column, BindingCell.SheetArea);
                if (info != FilterButtonInfo)
                {
                    FilterButtonInfo = info;
                    SynFilterButton();
                }
            }
#endif
        }