內部控制這是XAML:訪問一個控件模板
<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>
我特林可以訪問一個名爲textBlock2
TextBlock的。
我試過重寫OnApplyTemplate
,但得到空值。
我已經試過:
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#全爲空。
我在這裏錯過了什麼?
我懷疑你的按鈕沒有'加載(在UI上呈現)'呢。只有在模板應用於按鈕時,您的代碼纔會返回null。 –
由於您尚未在xaml聲明中爲您的網格指定'x:Name',因此'gridInTemplate'爲null。 –
我碰到類似的問題,不得不調用'UpdateLayout'來解決@RohitVats提到的問題。 – Chris