Yecats
Yecats

Reputation: 1815

Unable to Remove Child in WPF

I have a uniform grid that has rectangles dynamically added to it. I want to remove a particular rectangle, but I am getting the following error when trying to pass it to the Remove method:

Cannot convert from 'System.Drawing.Rectangle' to 'System.Windows.UIElement'

My code is:

        Rectangle swatch = (Rectangle)ug_Thumbnails.FindName("s_" + _instance);
        ug_Thumbnails.Children.Remove(swatch);

I tried casting, and got an error saying that you couldn't do it.

EDIT: Per request, here's the code to create the rectangle:

        System.Windows.Shapes.Rectangle swatch = new System.Windows.Shapes.Rectangle();
        swatch.Width = 50;
        swatch.Height = 50;
        swatch.Margin = new Thickness(0, 5, 5, 0);
        swatch.StrokeThickness = 1;
        swatch.Stroke = System.Windows.Media.Brushes.Gray;
        swatch.Name = "s_" + name.ToString();
        double groupsize = 100 / colors.Count();
        DrawingBrush blackBrush = new DrawingBrush();
        DrawingGroup checkersDrawingGroup = new DrawingGroup();
        List<SolidColorBrush> brushes = colors;
        double location = 0;
        for (int i = 0; i < colors.Count(); i++)
        {
            GeometryDrawing drawing = new GeometryDrawing(brushes[i], null,
                new RectangleGeometry(new Rect(location, 0, groupsize, groupsize)));
            checkersDrawingGroup.Children.Add(drawing);
            location += groupsize;
        }
        blackBrush.Drawing = checkersDrawingGroup;
        swatch.Fill = blackBrush;
        swatch.MouseUp += new MouseButtonEventHandler(loadSwatchResources);

        ug_Thumbnails.Children.Add(swatch);

Upvotes: 1

Views: 206

Answers (1)

dwatland
dwatland

Reputation: 98

You need to use the Rectangle in System.Windows.Shapes when trying to reference a rectangle in WPF. This is specifically for rectangles in WPF and as such is a bit different than the System.Drawing rectangle class. You should be able to cast to this version of rectangle since it derives from FrameworkElement. See http://msdn.microsoft.com/en-us/library/system.windows.shapes.rectangle(v=vs.110).aspx for more info.

Upvotes: 2

Related Questions