прямоугольник скважины не является элементом управления содержимым, он получен из объекта формы ... мы не можем использовать его в качестве панели.
вместо прямоугольника можно использовать границу.
если ваше требование требует Rectangle, тогда вы можете ... создать Grid>, затем добавить прямоугольник в Grid> и создать текстовый блок и добавить его в ту же сетку ... поскольку сетка физически не видна, она появляется как текст, добавленный в прямоугольник ..
Я постараюсь опубликовать образец
Edit:
следующий код поможет вам лучше понять его
for (int i = 0; i < _RoomX.Count; i++)
{
_RoomX[i] = (Convert.ToDouble(_RoomX[i]) * 20).ToString();
_RoomY[i] = (Convert.ToDouble(_RoomY[i]) * 20).ToString();
var rectangle = new Rectangle()
{
Stroke = Brushes.Black,
Fill = brush,
Width = Convert.ToDouble(_RoomX[i]),
Height = Convert.ToDouble(_RoomY[i]),
Margin = new Thickness(
left: 15,
top: 50,
right: 0,
bottom: 0),
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Top
};
Grid grid = new Grid();
grid.Children.Add(rectangle);
TextBlock textblock = new TextBlock();
textblock.Text = "Text to add";
grid.Children.Add(textblock);
mainCanvas.Children.Add(grid);
}