Normalmente, los controles de WPF se declaran en los archivos .xaml y no en el código subyacente (archivos .xaml.cs). Sin embargo, a veces necesito usar algunos de esos controles en el código para manipularlos. ¿Cómo puedo obtener el control de dicho control si "reside" en el archivo xaml?¿Cómo acceder a un control WPF ubicado en ControlTemplate?
Respuesta
Puede utilizar el método FindName() de la clase ControlTemplate.
// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);
No estoy seguro de lo que estás preguntando, así que intentaré responder a las dos instancias que estoy interpretando como tu pregunta.
1) Si desea declarar un control explícito, y luego editarlo directamente, todo lo que tiene que hacer es establecer la propiedad nombre como por ejemplo:
<Canvas x:Name="myCanvas"/>
A continuación, puede acceder a la tela a través de la nombrar como tal:
myCanvas.Background = Brushes.Blue;
2) Si usted está mirando para declarar un control genérico y, a continuación, utilizarlo varias veces, puede hacerlo de esta manera:
<Window>
<Window.Resources>
<Ellipse x:Key="myEllipse" Height="10" Width="10">
</Window.Resources>
</Window>
continuación, puede acceder a ese control predefinida con esta sintaxis en código:
Ellipse tempEllipse = (Ellipse)FindResource("MyEllipse");
Si desea utilizar el Resourse como plantilla para varios controles, añadir x: Compartido = "falso".
FindName() sigue devolviendo nulo. FindResource() funcionó para mi aplicación. Gracias. – JohnForDummies
- 1. WPF ControlTemplate para desplazarse TreeView Control
- 2. ¿Cómo acceder/hacer ping a un servidor ubicado en AWS?
- 3. WPF: Enlace al comando de ControlTemplate
- 4. Definir un WPF ControlTemplate en tiempo de ejecución
- 5. WPF: utilice un recurso ControlTemplate dentro de un estilo
- 6. ¿Cómo acceder al control C# WPF de manera segura?
- 7. Cómo usar propiedades personalizadas en un activador ControlTemplate
- 8. ItemTemplate vs ControlTemplate
- 9. Cómo puedo asignar el Caret a un control en WPF
- 10. WPF: ¿eventos en una plantilla de control?
- 11. ¿Cómo acceder a un control de formulario para otro formulario?
- 12. WPF - Vincular visibilidad de control de usuario a una propiedad
- 13. ¿Cómo acceder mediante programación a Control en cuadrícula WPF por índice de fila y columna?
- 14. Desvanecimiento WPF en un control
- 15. WPF invocar un control
- 16. ¿Cómo puedo acceder a ListViewItems de un WPF ListView?
- 17. Predeterminado ControlTemplate para Expander
- 18. Desde WPF Control a Silverlight Control
- 19. WPF/Silverlight: Templating Custom Control PARTIALLY
- 20. WPF Custom Control - ¿Cómo prueba un control personalizado?
- 21. TemplateBinding de un Style DataTrigger en ControlTemplate
- 22. Copie un control WPF programáticamente
- 23. Ejecutar un control WPF en otro hilo
- 24. WPF/threading: Dispatcher estático frente a Dispatcher en un control?
- 25. Hace referencia a un archivo css ubicado en el área
- 26. WPF DataGrid Plantilla de control
- 27. ¿Cómo puedo agregar contenido adicional a un WPF TabControl?
- 28. ¿Cómo acceder a un control desde un elemento de menú ContextMenu a través del árbol visual?
- 29. Usando un control WPF personalizado en WinForms
- 30. ¿Cómo puedo acceder al control de una ventana (richtextbox) desde otra ventana en wpf?
Esto me devolvió una excepción nula, luego me di cuenta de algo al intentar algunas respuestas diferentes aquí en SO: use la respuesta de CSharper si la plantilla que está buscando _se aplica en myButton1_. Pero si myButton1 es solo un miembro de dicha plantilla, use '(Grid) myButton1.FindName (" grid ");' en su lugar (útil en los manejadores de botones). – Naucle