Я пишу приложение, которое в основном представляет собой дизайнер, очень похожий на дизайнер Expression Blend или Visual Studio. Таким образом, в основном на поверхности дизайна есть куча элементов пользовательского интерфейса, и вы можете делать такие вещи, как перетаскивание, изменение размера, поворот и т. д.
Основным элементом управления контейнером, который будет поверхностью дизайна, может быть любой элемент управления, производный от Panel, который включает такие элементы управления, как Canvas, Grid и т. д. Эта ситуация, означающая поддержку любого элемента управления, производного от Panel, в качестве поверхности дизайна, поднимает проблему там, где мне нужно чтобы найти общий способ установить размер и расположение дочерних элементов управления на этой поверхности, независимо от типа элемента управления на другой панели.
Я использую вызов UIElement.Arrange() для перемещения/изменения размера элементов управления, и это работает, но после обновления макета элемента управления родительской панели, например, при изменении его размера, все мои изменения сбрасываются до значений по умолчанию. Мне также известна текущая логика макета с двумя проходами в элементах управления панели WPF, но у меня нет возможности получить элемент управления и использовать его в качестве фонового объекта.
Короче говоря, есть ли общий способ добиться того, чего я хочу, установив размер/положение дочернего элемента управления в элементе управления, производном от панели, поскольку я вижу, что Blend/VS Designer распознает, как позиционировать элементы управления в элементе управления, производном от панели? Или они также жестко закодированы для известных элементов управления, производных от Panel?
Заранее спасибо...
Озден