Как я могу центрировать элемент в холсте wpf с помощью прикрепленных свойств?
Как центрировать элемент в холсте wpf
Ответ 1
Что-то вроде этого.
double left = (Canvas.ActualWidth - element.ActualWidth) / 2;
Canvas.SetLeft(element, left);
double top = (Canvas.ActualHeight - element.ActualHeight) / 2;
Canvas.SetTop(element, top);
Ответ 2
Я столкнулся с этим сообщением, потому что я искал способ центрировать элемент внутри Canvas только в XAML, вместо использования Attached Properties.
На всякий случай вы пришли по той же причине:
<Canvas x:Name="myCanvas">
<Grid Width="{Binding ActualWidth, ElementName=myCanvas}"
Height="{Binding ActualHeight, ElementName=myCanvas}">
<Label Content="Hello World!"
HorizontalAlignment="Center"
VerticalAlignment="Center"
/>
</Grid>
</Canvas>
Ответ 3
Единственный способ, которым я это знаю, - это выяснить размер холста, а затем установить свойства, основанные на этом. Это можно сделать с помощью обработчика событий для SizeChanged
на холсте:
parentCanvas.SizeChanged += new SizeChangedEventHandler(parentCanvas_SizeChanged);
void parentCanvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
parentCanvas.SetLeft(uiElement, (parentCanvas.ActualWidth - uiElement.ActualWidth) / 2);
parentCanvas.SetTop(uiElement, (parentCanvas.ActualHeight - uiElement.ActualHeight) / 2);
}
Ответ 4
Вы можете поместить холст и элемент, который хотите центрировать внутри сетки:
<Grid>
<Canvas Width="200" Height="200" Background="Black" />
<Button Width="50" Height="20" > Hello
</Button>
</Grid>