Общий вопрос о размещении элемента внутри 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 соответствовали центру элемента, и оба свойства размера и положения могут быть связаны с некоторыми другими свойствами?