Общий вопрос о размещении элемента внутри Canvas
: "Как позиционировать центр элемента (вместо верхнего левого угла)".
- WPF: изменение размера круга, сохраняя центральную точку вместо TopLeft?
- WPF Center Ellipse в X, Y
- Позиционирование элемента WPF на холсте
Представлены несколько решений, но все они имеют недостатки.
Самое простое решение - разместить размер элемента во время установки программных свойств Canvas.Left
и Canvas.Top
. Это работает, но только один раз. Это решение не поддерживает привязки, и оно будет ломаться при изменении размера элемента. Вы также не можете установить Canvas.Left
или Canvas.Top
, используя
Еще один набор решений включает преобразование переводов с использованием RenderTransform
или Margin
. Эти решения требуют привязки некоторого свойства к -0.5 * Width
или -0.5 * Height
. Такое связывание требует создания пользовательского ValueConverter
и невозможно создать с использованием только XAML.
Итак, существует ли простой способ разместить элемент внутри холста так, чтобы его Canvas.Left
и Canvas.Top
соответствовали центру элемента, и оба свойства размера и положения могут быть связаны с некоторыми другими свойствами?