У меня есть равномерная сетка, в которую динамически добавляются прямоугольники. Я хочу удалить конкретный прямоугольник, но при попытке передать его методу Remove я получаю следующую ошибку:
Невозможно преобразовать из "System.Drawing.Rectangle" в "System.Windows.UIElement"
Мой код:
Rectangle swatch = (Rectangle)ug_Thumbnails.FindName("s_" + _instance);
ug_Thumbnails.Children.Remove(swatch);
Я попробовал кастинг и получил сообщение о том, что вы не можете этого сделать.
EDIT: по запросу здесь создается код для создания прямоугольника:
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);
Вам нужно использовать Rectangle в System.Windows.Shapes при попытке ссылаться на прямоугольник в WPF. Это специально для прямоугольников в WPF и, как таковое, немного отличается от класса прямоугольника System.Drawing. Вы должны иметь возможность использовать эту версию прямоугольника, поскольку она происходит из FrameworkElement. См. Http://msdn.microsoft.com/en-us/library/system.windows.shapes.rectangle(v=vs.110).aspx для получения дополнительной информации.