2014-10-21 2 views
0

나는 그것은이 같은 일 수있다은 ControlTemplate의 인적 또는에게ControlTemplate의 위쪽 UIElement를 어떻게 참조합니까? 내 사용자 지정 컨트롤에서

public ControlTemplate ControlTemplate 

있습니다

<map:IdattMapLayer.ControlTemplate> 
    <ControlTemplate> 
     <Canvas 
      DataContext="{Binding 
       Converter={StaticResource ObjectToTrackedAssetConverter}}"> 
      <Button         
       Style="{StaticResource LooklessButtonStyle}" 
       Width="{Binding PushpinWidth}" Height="{Binding PushpinWidth}" 
       Margin="{Binding PushpinMargin}" 
       Command="{Binding 
        Path=DataContext.SelectedPushpinChangedCommand, 
        ElementName=LayoutRoot}" 
       CommandParameter="{Binding}" 
       Cursor="Hand"> 
       <Ellipse 
        Width="{Binding PushpinWidth}" 
        Height="{Binding PushpinWidth}" 
        Stroke="Black" 
        Fill="{Binding IsGPSDataRecent, 
         Converter={StaticResource BoolToGreenRedBrushConverter}}" 
        StrokeThickness="1"> 
       </Ellipse> 
      </Button> 
     </Canvas> 
    </ControlTemplate> 
</map:IdattMapLayer.ControlTemplate> 

내가 XAML에서 그 일을하기보다는 Canvas의 데이터 컨텍스트 자신을 설정하고 싶습니다.

그래서 ControlTemplate이있는 경우 - 프로그래밍 방식으로 첫 번째 하위 항목 (이 경우 캔버스)을 찾으려면 어떻게해야합니까?

+0

'ControlTemplate.VisualTree.FirstChild' –

+0

ControlTemplate에 VisualTree 속성이 없습니다 .. – katit

+0

LOL, Visual Studio에서 바로 복사했습니다. ??, .NET Framework는 무엇을 사용하고 있습니까? 설명서에도 나와있는 것 같다. http://msdn.microsoft.com/en-us/library/system.windows.controls.controltemplate(v=vs.110).aspx –

답변

1

1) set x : Canvas의 Name 속성.

2) OnApplyTemplate을 재정의합니다.

3) Get Canvas 용 (Canvas) GetTemplateChild ("CanvasName")를 사용하십시오.

물론이 클래스는 컨트롤에서 상속해야합니다.