custom - use user control wpf
¿Cómo accedo a un elemento de una plantilla de control desde código subyacente? (2)
Debe obtener la plantilla y ubicar el control por nombre en el control de plantilla, algo así como:
var template = MyList.Template;
var myControl = (MyControl)template.FindName("MyControlName", MyList);
Las plantillas son solo eso: Descripciones abstractas de lo que se creará, los controles en las plantillas solo existen en el contexto de algo que se está modelando.
Tenga en cuenta que solo debe acceder a los elementos dentro de una plantilla de control si está creando el control para el que está la plantilla. El acceso desde el exterior debe realizarse a través de propiedades y métodos enlazados.
Para las plantillas de datos, esto es similar. Todas las cosas que necesita acceder deben estar vinculadas a un objeto y el acceso debe ser a través de dicho objeto. Esto es especialmente cierto en los casos de controles de artículos que virtualizan sus artículos, por lo que los elementos ni siquiera existen la mayor parte del tiempo.
Estoy intentando acceder a un control de usuario que está dentro de la plantilla de control de un control de contenido. Específicamente:
<ContentControl x:Name="MyList" >
<ContentControl.Template>
<ControlTemplate x:Name="MyControlTemplate">
<Border RenderTransformOrigin="0,0" x:Name="border">
<UserControls:MyControl x:Name="MyControlName" Width="100" ViewModel="{Binding}" />
Puedo acceder a this.MyList pero dice esto. MyControlName no se encuentra. ¿Cómo puedo acceder al objeto MyControlName desde código subyacente en esta situación?
¡Gracias!
U también puede obtener el control de cada plantilla al agregar el evento cargado en control y luego en el código asignar el remitente del evento a alguna variable.