template control wpf controls controltemplate

¿Cómo acceder a un control WPF ubicado en una ControlTemplate?



wpf button template (2)

No estoy seguro de lo que está preguntando, así que intentaré responder a las dos instancias que estoy interpretando como su pregunta.

1) Si desea declarar un control explícito y luego editarlo directamente, todo lo que tiene que hacer es establecer la propiedad del nombre como:

<Canvas x:Name="myCanvas"/>

A continuación, puede acceder al lienzo a través del Nombre como tal:

myCanvas.Background = Brushes.Blue;

2) Si desea declarar un control genérico y luego usarlo varias veces, puede hacerlo de la siguiente manera:

<Window> <Window.Resources> <Ellipse x:Key="myEllipse" Height="10" Width="10"> </Window.Resources> </Window>

Luego puede acceder a ese control predefinido usando esta sintaxis en el código:

Ellipse tempEllipse = (Ellipse)FindResource("MyEllipse");

Si desea utilizar el recurso como una plantilla para varios controles, agregue x: Shared = "false".

Generalmente, 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 que hay detrás para manipularlos. ¿Cómo puedo obtener el identificador de dicho control si "reside" en el archivo xaml?


Puede usar 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);