2012-06-27 59 views
1

我在頁面佈局中有一個控件模板,如下所示。訪問Silverlight控件模板項目代碼隱藏

<Grid x:Name="LayoutRoot"> 
     <Grid.Resources> 
     <ControlTemplate x:Key="myTemplate" TargetType="esri:MapTip"> 
       <Border CornerRadius="10" Background="#DDFFEEEE" BorderThickness="4" BorderBrush="#99FF0000"> 
        <StackPanel Background="#DDFFFFFF"> 

         <sdk:TabControl Height="180" Margin="5" Name="tabControl1" Width="300">  
           <sdk:TabItem Header="Info" Name="infoTab"> 

           <TextBlock x:Name="cityInfoTxt" Tag="{Binding [City_ID]}"/>  

           </sdk:TabItem> 
         </sdk:TabControl> 
        </StackPanel> 
       </Border> 
      </ControlTemplate> 

在代碼背後,我該如何訪問?

我想這一點,

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    var te = this.LayoutRoot.Resources["myTemplate"] as ControlTemplate; 

} 

但在標籤控件不能訪問該文本塊。

+0

模板僅僅是爲您創造元素時遵循的模式,它們不是內容本身(因爲他們可以使用同一模板的多個實例)。你試圖解決的實際問題是什麼? –

+0

我實際上更新了模板中的文本塊 – bayramucuncu

+0

您的意思是文本屬性?如果是這樣,那應該通過一個綁定來完成,而不是嘗試將值推入其中。 –

回答

0

重寫代碼後面的OnAplyTemplate()方法並嘗試查找組件。

public override void OnApplyTemplate() 
    { 
     base.OnApplyTemplate(); 
     var myTextBlock = GetTemplateChild("cityInfoTxt") as TextBlock; 
    } 

希望它可以幫助

相關問題