2014-06-06 1 views
0

시각적 트리에서 ComboBox 팝업 (ComboBoxItems가있는 목록)을 찾을 수 있습니까? 시각적 트리에서 ComboBox 팝업은 어디에 있습니까?

나는 프로그래밍 방식으로 콤보 상자를 열었습니다 디버거에서 WPF 트리 비주얼에서 그것을 볼 때 나는 다음을 참조하십시오 (? StackPanel에)

: ComboBox 
    templateRoot : Grid 
    PART_Popup : Popup 
    toggleButton : ToggleButton 
     templateRoot : Border 
     splitBorder : Border 
      Arrow : Path 
    contentPresenter : ContentPresenter 
     : TextBlock 

내가 항목 호스트의 일종으로의 ScrollViewer를 볼 것으로 예상 , 아마도 PART_Popup이 있지만 어디에도 없습니다.

그렇다면 어디입니까?

+0

'Popup'가 콤보 상자와 팝업이 공유하지 않는 것을 의미, 자신의 시각적 트리 – dkozl

+0

자신의 트리를해야합니다 뿌리? –

+0

네,'IsOpen = true'를 설정하면 새로운 시각적 트리가 생성됩니다. _Popup 및 Visual Tree_ 아래의 [MSDN] (http://msdn.microsoft.com/en-us/library/ms749018(v=vs.110) .aspx) 페이지에서 자세한 내용을 볼 수 있습니다. 현재의 시각 트리와 Popup는,'Popup.PlacementTarget'를 개입시켜 접속됩니다. 메인 비주얼 트리에 접근하기 위해 사용할 수 있습니다. – dkozl

답변

5

PART_Popup에는 StackPanel이 있고 ItemsHost는 True로 설정되고 ScrollViewer에 의해 래핑됩니다. 기본 템플릿은 MSDN에서 확인할 수 있습니다. 동일한 루트를 공유하지 않습니다

<Popup x:Name="Popup" 
     Placement="Bottom" 
     IsOpen="{TemplateBinding IsDropDownOpen}" 
     AllowsTransparency="True" 
     Focusable="False" 
     PopupAnimation="Slide"> 
    <Grid x:Name="DropDown" 
      SnapsToDevicePixels="True" 
      MinWidth="{TemplateBinding ActualWidth}" 
      MaxHeight="{TemplateBinding MaxDropDownHeight}"> 
     <Border x:Name="DropDownBorder" 
       BorderThickness="1"> 
     <Border.BorderBrush> 
      <SolidColorBrush Color="{DynamicResource BorderMediumColor}" /> 
     </Border.BorderBrush> 
     <Border.Background> 
      <SolidColorBrush Color="{DynamicResource ControlLightColor}" /> 
     </Border.Background> 
     </Border> 
     <ScrollViewer Margin="4,6,4,6" 
        SnapsToDevicePixels="True"> 
     <StackPanel IsItemsHost="True" 
        KeyboardNavigation.DirectionalNavigation="Contained" /> 
     </ScrollViewer> 
    </Grid> 
</Popup> 

UPDATE

팝업 및으로 comboBox :

이처럼 보이는 방법이다. 다른 시각적 트리에 속하므로 WPF Tree Visualizer에서 보이지 않는 이유는 PopUp을 열어서 시각적 트리를보아야하기 때문입니다.

Visual Tree를 검사하는 기능이있는 WPF 스파이 유틸리티 인 Snoop을 사용할 수 있습니다. 팝업에 대한 스눕에서 찍은 스냅 샷과 같은 (윈도우 8)이 :

enter image description here

+1

예, 팝업은'ControlTemplate'에서, 'ToggleButton'과 seleced 항목의'ContentPresenter'와 함께 Grid에 있습니다. 그렇다면 시각 트리에서 왜 그것을 볼 수 없습니까? –

+0

후속 질문에 대한 답변에서 업데이트를 참조하십시오. –

+1

+1 좋은 답변입니다. –

관련 문제