Вы можете изменить свой код следующим образом:
<Canvas Width="800" Height="600" RenderTransformOrigin="0.5,0.5">
<local:UpgradeLandDialog x:Name="upgradeDialog" Canvas.Left="250" Canvas.Top="200" HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="0">
<local:UpgradeLandDialog.LayoutTransform>
<ScaleTransform ScaleX="0" ScaleY="0"/>
</local:UpgradeLandDialog.LayoutTransform>
</local:UpgradeLandDialog>
</Canvas>
Удалите (CenterX="400" CenterY="300")
и добавьте (RenderTransformOrigin="0.5,0.5")
к холсту. Таким образом, если у вас есть контейнер с динамической шириной и высотой, он может без проблем масштабироваться от центра.