【发布时间】:2013-10-07 14:54:36
【问题描述】:
这是 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 但得到了 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# 都是空的。
我在这里错过了什么?
【问题讨论】:
-
我怀疑你的按钮还没有
loaded(rendered on UI)。仅当模板应用于按钮时,您的代码才会返回 null。 -
另外,
gridInTemplate为 null,因为您尚未在 xaml 声明中为您的 Grid 指定x:Name。 -
我遇到了类似的问题,不得不致电
UpdateLayout,以解决@RohitVats 提到的问题。 -
如果你使用 Expander 可以看看stackoverflow.com/questions/26422811/…
标签: c# wpf c#-4.0 controltemplate