2012-06-27 15 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; 

} 

하지만 탭 컨트롤의 TextBlock에 액세스 할 수 없습니다.

+0

템플릿 그냥 요소를 만들 때 따라야 할 패턴입니다 도움이되기를 바랍니다, 그들은 요소 자체 아니다. 당신이 해결하려고하는 실제 문제는 무엇입니까? –

+0

사실 템플릿의 텍스트 블록을 업데이트하십시오. – bayramucuncu

+0

텍스트 속성을 의미합니까? 그렇다면 값을 가져올 바인딩을 통해 수행해야합니다 (값을 넣고 값을 밀어 넣는 것이 아니라). –

답변

0

코드 숨김 OnAplyTemplate()을 재정의하고 구성 요소를 찾으십시오. (그들은 같은 템플릿을 사용하여 여러 인스턴스가 될 수 있기 때문에)

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

그것이