¿Cómo puedo centrar un elemento en el lienzo wpf utilizando las propiedades adjuntas?Cómo centrar un elemento en el lienzo wpf
Respuesta
Algo como esto.
double left = (Canvas.ActualWidth - element.ActualWidth)/2;
Canvas.SetLeft(element, left);
double top = (Canvas.ActualHeight - element.ActualHeight)/2;
Canvas.SetTop(element, top);
La única forma que conozco de hacer esto es para averiguar el tamaño del lienzo, y luego establecer las propiedades con sede fuera de eso. Esto puede hacerse utilizando un controlador de eventos para SizeChanged
en el lienzo:
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);
}
activará este evento al cargar la ventana. –
Debería, sí. Se activará siempre que se modifiquen las propiedades ActualWidth/ActualHeight del lienzo. (es decir, durante la actualización del diseño) – Robin
Genial. Pero creo que debería ser Canvas.SetLeft y Canvas.SetTop; no es la instancia del Lienzo padre. –
puede poner la lona y el elemento que desea estar centrado dentro de una cuadrícula:
<Grid>
<Canvas Width="200" Height="200" Background="Black" />
<Button Width="50" Height="20" > Hello
</Button>
</Grid>
me encontré con este post , porque estaba buscando una manera de centrar un elemento dentro de un lienzo en XAML solamente, en lugar de utilizar Propiedades adjuntas.
Por si acaso, que llegó por la misma razón:
<Canvas x:Name="myCanvas">
<Grid Width="{Binding ActualWidth, ElementName=myCanvas}"
Height="{Binding ActualHeight, ElementName=myCanvas}">
<Label Content="Hello World!"
HorizontalAlignment="Center"
VerticalAlignment="Center"
/>
</Grid>
</Canvas>
¡Impresionante! Esto funciona "tal cual", sin código detrás. Lo usé para centrar un UserControl, en el lugar de la etiqueta. –
Ahora hay una red lenta dentro. Una solución sin una Grilla sería agradable. –
- 1. Cómo centrar el lienzo en html5
- 2. WPF Cómo centrar el Image.Source
- 3. Estirar un lienzo WPF horizontalmente
- 4. ¿Cómo se puede alinear un fondo de lienzo en WPF?
- 5. WPF Virtualización de un lienzo
- 6. WPF: ¿cómo puedo centrar todos los artículos en un WrapPanel?
- 7. ¿Cómo centrar un texto de etiqueta en WPF?
- 8. ¿Cómo centrar un ImageView verticalmente en su elemento primario?
- 9. WPF forzando el rediseño del lienzo
- 10. Lienzo arrastrable en WPF usando un 'Thumb'
- 11. ¿Cómo centrar elementos en BoxLayout usando el centro del elemento?
- 12. Guardar un lienzo WPF como una imagen
- 13. ¿Cómo centrar verticalmente las imágenes dentro de un elemento LI?
- 14. ¿Cómo centrar horizontalmente un elemento flotante de ancho variable?
- 15. ¿Cómo puedo centrar un elemento relativo a su padre?
- 16. WPF: ¿Cómo hacer que el lienzo cambie el tamaño automáticamente?
- 17. Mejorando el rendimiento del lienzo de WPF
- 18. OnMouseMove no dispara en lienzo en WPF
- 19. ¿Cómo centrar el cuerpo en una página?
- 20. WPF: Gire el rectángulo y colóquelo en el lienzo
- 21. Cómo deshabilitar seleccionar elemento de lienzo html5
- 22. Cómo centrar un JqGrid
- 23. Cómo centrar Alinear elemento de plantilla en PdfPCell
- 24. ¿Cómo centrar una aplicación WPF en la pantalla?
- 25. Guardar el elemento de lienzo html5 en el archivo (local)
- 26. Cómo cambiar el tamaño del elemento de lienzo html?
- 27. cómo colocar y centrar el texto en un rectángulo SVG
- 28. ¿Cómo centrar un iframe horizontalmente?
- 29. No se puede encoger completamente y centrar un elemento
- 30. WPF: ¿cómo manejo un clic en un elemento de ListBox?
puede escribirse esta dentro de una clase que hereda una clase de tela como una propiedad adjunta. –