La domanda comune sul posizionamento di un elemento all'interno di Canvas
è "Come posizionare il centro dell'elemento (anziché il Angolo in alto a sinistra)".Posizionamento di un elemento all'interno della tela dal centro (anziché dall'angolo in alto a sinistra) utilizzando solo XAML in Silverlight/WinRT
- WPF: Resizing a circle, keeping the center point instead of TopLeft?
- WPF Center Ellipse at X, Y
- WPF element positioning on a Canvas
Diverse soluzioni sono presentati, ma tutti hanno svantaggi.
Esiste un metodo semplice (XAML solo) per posizionare un elemento interno tela in modo che la sua Canvas.Left
e Canvas.Top
corrispondono al centro dell'elemento e proprietà sia di dimensioni e la posizione possono essere vincolati ad alcune altre proprietà?
ho trovato un modo molto semplice per fare questo in WPF (appena impostato Margin="-1000000"
Positioning an element inside the Canvas by its center (instead of the top left corner) using only XAML in WPF), ma non funziona per Silverlight/WinRT. L'unico altro metodo che conosco richiede la creazione di ValueConverter
per eseguire il calcolo x *= -0.5
(che non è solo XAML).
Abbastanza ingegnoso! Ho cercato di risolvere il sistema di diverse equazioni di trasformazione per arrivare a una soluzione come questa, ma non ci sono riuscito. Questa doppia trasformazione fa bene l'affare. Post scriptum I valori RenderTransformOrigin possono anche essere '0,0'; '0.25.0.25' o' -0.25, -0.25'; '0,0'. Hanno solo bisogno di soddisfare l'equazione 'Internal - External = 1/4'. –