/// <summary> /// Handles the GlyphDrawing event of the renderer control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="args">The <see cref="Syncfusion.Windows.Controls.Grid.GridTreeGlyphDrawingEventArgs"/> instance containing the event data.</param> void renderer_GlyphDrawing(object sender, GridTreeGlyphDrawingEventArgs args) { GridTreeExpanderCellRendererExt renderer = sender as GridTreeExpanderCellRendererExt; if (renderer != null) { //code that draws a circle.... PathGeometry pg = args.Geometry; Point pt0 = args.StartPoint; if (args.IsHot) { pt0.Offset(1, 5); } else { pt0.Offset(0, 4); } PathFigure pf = new PathFigure(); pf.StartPoint = pt0; pf.IsClosed = false; pf.IsFilled = !args.Opened; double r = args.IsHot ? 4 : 5; //raduis pt0.Offset(0, .001); //make it essentially a full circle ArcSegment seg = new ArcSegment(pt0, new Size(r, r), 0, true, SweepDirection.Clockwise, true); pf.Segments.Add(seg); pg.Figures.Add(pf); } }
/// <summary> /// Invokes the specified parameter. /// </summary> /// <param name="parameter">The parameter.</param> protected override void Invoke(object parameter) { bool customDrawingEventHooked = false; var treeGrid = this.TargetObject as GridTreeControl; if (treeGrid.InternalGrid != null) { if ((parameter as SelectionChangedEventArgs).AddedItems[0] != null) { GridTreeExpandGlyph Item = (GridTreeExpandGlyph)((parameter as SelectionChangedEventArgs).AddedItems[0]); treeGrid.InternalGrid.ExpandGlyphType = Item; } if (treeGrid.InternalGrid.ExpandGlyphType == GridTreeExpandGlyph.Custom) { //need to subscribe to an event and provide the Glyph, bout on subscribe the first time... if (!customDrawingEventHooked) { GridTreeExpanderCellRendererExt renderer = treeGrid.InternalGrid.CellRenderers["ExpanderCell"] as GridTreeExpanderCellRendererExt; if (renderer != null) { renderer.GlyphDrawing += new GridTreeGlyphDrawingHandler(renderer_GlyphDrawing); customDrawingEventHooked = true; } } } SetColorsBasedOnComboBox(); } }