a内に要素を配置することに関する一般的な質問Canvas
は、「要素の中心を(左上隅ではなく)配置する方法」です。
いくつかの解決策が提示されていますが、それらにはすべて欠点があります。
最も簡単な解決策は、プログラムでプロパティCanvas.Left
とプロパティを設定するときに要素サイズに対応することです。Canvas.Top
これは機能しますが、1回だけです。このソリューションはバインディングをサポートしておらず、要素サイズが変更されると壊れます。Canvas.Left
また、またはCanvas.Top
を使用して設定することはできません
RenderTransform
別の一連のソリューションには、またはのいずれかを利用した変換変換が含まれますMargin
。-0.5 * Width
これらのソリューションでは、またはにいくつかのプロパティをバインドする必要があります-0.5 * Height
。このようなバインディングにはカスタムの作成が必要であり、ValueConverter
XAMLのみを使用して作成することはできません。
では、要素をキャンバス内に配置して、要素の中心に対応し、サイズと位置の両方のプロパティを他のプロパティにバインドできるようにする簡単な方法はありCanvas.Left
ますCanvas.Top
か?