How can I center an element in wpf canvas using attached properties?
The only way I know to do this is to figure out the size of the canvas, and then set the properties based off that. This can be done using an event handler for SizeChanged on the canvas:
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);
}