Questo è il codice XAML:Accesso a un controllo all'interno di un ControlTemplate
<Page.Resources>
<ControlTemplate x:Key="WeddingButtonBigTemplate" TargetType="Button">
<Grid>
<Image x:Name="imgNormal" Source="../Images/Married_button2.png"/>
<TextBlock x:Name="textBlock2" Style="{StaticResource RegularBlueSpecialBoldText}" LineHeight="28" LineStackingStrategy="BlockLineHeight" HorizontalAlignment="Center" Margin="10,30,10,70" TextWrapping="Wrap" TextAlignment="Center" VerticalAlignment="Stretch" >
<Run FontSize="20" Text="The event of"></Run>
<Run FontSize="28" Text="{DynamicResource strBride}"></Run>
</TextBlock>
</Grid>
</ControlTemplate>
</Page.Resources>
<Grid HorizontalAlignment="Center" VerticalAlignment="Top" Width="1000">
<Button x:Name="btnWedding" HorizontalAlignment="Left" Margin="10,20,0,-49" VerticalAlignment="Top" Template="{StaticResource WeddingButtonBigTemplate}" Foreground="#FF2B4072" Width="380" Click="btnClick" />
</Grid>
sto Tring per ottenere l'accesso al TextBlock nome textBlock2
.
Ho provato a sovrascrivere OnApplyTemplate
ma ho ottenuto null.
ho provato:
Grid gridInTemplate = (Grid)btnWedding.Template.FindName("grid", btnWedding);
var ct0 = btnWedding.Template.FindName("textBlock2", btnWedding);
var ct1 = btnWedding.FindName("textBlock2");
var ct2 = btnWedding.FindResource("textBlock2");
Il gridInTemplate è nullo (campione prelevato da MSDN).
Il ct # sono tutti nulli, ovviamente.
Cosa mi manca qui?
Sospetto che il tuo pulsante non sia stato ancora "caricato (rendering su interfaccia utente)". Il tuo codice restituirà null solo nel caso in cui il modello venga applicato sul pulsante. –
Anche 'gridInTemplate' è nullo dato che non hai specificato' x: Name' nella griglia in dichiarazione xaml. –
Mi sono imbattuto in un problema simile, ho dovuto chiamare 'UpdateLayout', per risolvere il problema menzionato da @RohitVats. – Chris