2012-06-27 6 views
1

У меня есть шаблон управления на странице Макет следующим образом.Доступ к элементам шаблона управления Silverlight codebehind

<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; 

} 

, но не может получить доступ к TextBlock в элементе управления вкладка.

+0

Шаблонов просто шаблон, чтобы следовать при создании элементов для вас, они не являются самими элементами (так как они могут быть несколько экземплярами, используя один и тот же шаблон). Какова фактическая проблема, которую вы пытаетесь решить? –

+0

Я действительно обновляю текстовый блок в шаблоне – bayramucuncu

+0

Вы имеете в виду свойство text? Если это так, это должно быть сделано через привязку, которая будет вытягивать значение (а не пытаться вставлять в него значение). –

ответ

0

переопределить метод OnAplyTemplate() по коду и попытаться найти ваш компонент.

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

Надеется, что это помогает

Смежные вопросы