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. WPF ControlTemplate parcial reemplazar
- 3. ¿Cómo acceder/hacer ping a un servidor ubicado en AWS?
- 4. WPF: Enlace al comando de ControlTemplate
- 5. Definir un WPF ControlTemplate en tiempo de ejecución
- 6. WPF: utilice un recurso ControlTemplate dentro de un estilo
- 7. ¿Cómo acceder al control C# WPF de manera segura?
- 8. Cómo usar propiedades personalizadas en un activador ControlTemplate
- 9. Cómo puedo asignar el Caret a un control en WPF
- 10. ItemTemplate vs ControlTemplate
- 11. WPF: ¿eventos en una plantilla de control?
- 12. ¿Cómo acceder a un control de formulario para otro formulario?
- 13. WPF - Vincular visibilidad de control de usuario a una propiedad
- 14. ¿Cómo acceder mediante programación a Control en cuadrícula WPF por índice de fila y columna?
- 15. Desvanecimiento WPF en un control
- 16. WPF invocar un control
- 17. ¿Cómo puedo acceder a ListViewItems de un WPF ListView?
- 18. Predeterminado ControlTemplate para Expander
- 19. Desde WPF Control a Silverlight Control
- 20. WPF/Silverlight: Templating Custom Control PARTIALLY
- 21. WPF Custom Control - ¿Cómo prueba un control personalizado?
- 22. Copie un control WPF programáticamente
- 23. TemplateBinding de un Style DataTrigger en ControlTemplate
- 24. Ejecutar un control WPF en otro hilo
- 25. WPF/threading: Dispatcher estático frente a Dispatcher en un control?
- 26. WPF DataGrid Plantilla de control
- 27. Hace referencia a un archivo css ubicado en el área
- 28. ¿Cómo puedo agregar contenido adicional a un WPF TabControl?
- 29. ¿Cómo acceder a un control desde un elemento de menú ContextMenu a través del árbol visual?
- 30. Usando un control WPF personalizado en WinForms
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