Accedere ai controlli all'interno di un DataTemplate
Per accedere ai controlli posti all'interno di un DataTemplate di un qualsiasi componente XAML che supporta il DataTemplate, occorre caricare in un oggetto di classe simile il contenuto del DataTemplate in fase di load del componente XAML, e poi referenziare questo oggetto per recuperare il suo contenuto.
Facciamo un esempio:
- Ho un componente Hub, e all'interno delle sue HubSection ho diversi DataTemplate che a loro volta contengono alcuni UserControl
<Hub x:Name="myHub" Header="Hub Control" >
<HubSection Header="First Section" >
<DataTemplate>
<local:UCTest x:Name="myUserControl" Loaded="myUserControl_Loaded" />
</DataTemplate>
</HubSection>
- Nell'evento Loaded del mio UserControl (o di qualsiasi altro oggetto avessi messo nel DataTemplate) vado ad appoggiare in un oggetto della stessa classe del mio UserControl, il "sender" dell'eveto Loaded opportunamente castato
UCTest myUcAppoggio;
...
private void myUcAccaddeOggi_Loaded(object sender, RoutedEventArgs e)
{
myUcAppoggio= (UCTest)sender;
}
- A questo punto posso referenziare il mio oggetto locale UCTest per fare le attività che mi servono lato codice