Это XAML:Доступ к управлению внутри 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>
Я Тринг, чтобы получить доступ к TextBlock с именем textBlock2
.
Я попытался переопределить OnApplyTemplate
, но получил значение null.
Я пробовал:
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");
gridInTemplate равна нулю (образец, взятый из MSDN).
Ct # все нулевые, конечно.
Что мне здесь не хватает?
Я подозреваю, что ваша кнопка еще не загружена (отображается в пользовательском интерфейсе). Ваш код вернет null только в том случае, если шаблон применяется к кнопке. –
Также 'gridInTemplate' является нулевым, так как вы не указали' x: Name' на свою Grid в объявлении xaml. –
Я столкнулся с подобной проблемой, мне пришлось вызвать 'UpdateLayout', чтобы решить проблему @RohitVats. – Chris