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