2012-05-12 2 views
1

작은 시각적 디자이너를 개발 중이며 요소 인덱싱의 기능을 구현해야합니다. 모든 요소에는 서로의 가시성 수준이 다릅니다. 주요 요소에 대해 ZIndex를 사용하지 않으므로 시각적 트리에 표시됩니다. 그러나 집합 인덱스 모드에있는 모든 요소에는 인덱스 번호가있는 영역이 있습니다. 문제는이 영역이 부모의 zindex를 상속한다는 것입니다. 나는이 지역 zindex = 1000을 설정하려했지만 도움이되지 못했습니다.하위 요소 용 WPF Panel.ZIndex

<ControlTemplate x:Key="IndexRegion" TargetType="ContentControl"> 
     <Border> 
      <StackPanel Orientation="Horizontal"> 
       <!--<TextBlock Text="Индекс: "></TextBlock>--> 
       <TextBlock Text="{Binding TabIndex}"></TextBlock> 
      </StackPanel> 
     </Border> 
    </ControlTemplate> 
<Style x:Key="IndexRegionStyle" TargetType="ContentControl"> 
     <Setter Property="HorizontalAlignment" Value="Left"></Setter> 
     <Setter Property="Margin" Value="1 -15 0 0"></Setter> 
     <Setter Property="Visibility" Value="{Binding IsTabIndexVisible, Mode=OneWay, Converter={StaticResource VisibilityOfBool}}"></Setter> 
     <Setter Property="Panel.ZIndex" Value="1000"></Setter> 
    </Style> 


<DataTemplate DataType="{x:Type viewModel:WizardFormTextFieldViewModel}"> 
    <wfSurface:DesignSurfaceItemContainer Width="{Binding Width}" Height="{Binding Height}" ClipToBounds="False"> 
    <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 

     <ContentControl Style="{StaticResource IndexRegionStyle}" Template="{StaticResource IndexRegion}"> 
     </ContentControl> --- this is an index region 

     <Border Style="{StaticResource WrongElement}"> 
     <Border Style="{StaticResource TextFieldStyle}">       
     </Border> 
     </Border> 
    </Grid> 
    </wfSurface:DesignSurfaceItemContainer>   
</DataTemplate> 

어떻게하면 모든 지역이 모든 주요 요소보다 위에있게 할 수 있습니까?

감사합니다.

+0

코드를 구성하십시오. 당신은 줄의 시작 부분에 4 칸을 눌러서 할 수 있습니다. – om471987

+0

예, 방금했습니다. –

답변

3

zIndex입니다 형제 자매의 z 순서 (동일 컨테이너의 자식 컨트롤)이 요소는 당신이 새 컨테이너를 추가해야 할 '모든'의 상단에있을하려면

을 구성하는 인덱스 모든 것의 위에. 이 템플릿과 같은 하위 수준에서는 지정할 수 없습니다. UI는 계층 구조로 남아 있습니다. 내가 아는 한이를 깨뜨릴 수는 없습니다.

+0

이것은 매우 실망 스럽 습니다만, 저는 그것에 대해 생각했지만, 이것은 솔루션을 훨씬 더 무겁게 만들었 기 때문에 희망을 지키려 노력했습니다. ( –

+0

해결책은 다를 것이지만 훨씬 더 무겁지는 않을 것입니다. 그냥 상위 그리드/캔버스를 추가하고 아이를 추가하십시오 객체 계층 구조에서 더 낮은 항목에 의해 묶여있는 객체 구조입니다. 이것은 객체 구조와 시각적 트리 구조가 동일하지 않은 결과입니다. –

+0

감사합니다.하지만 불행히도 그것은 도움이되지 않습니다. 다른 요소를 포함 할 수 있으므로 계층 구조가 매우 깊어 질 수 있으며 일부 요소는 컨테이너 요소의 가시 범위에 배치되지 않으므로 보이지 않을 수 있으므로 요소가 표시되는지 여부를 알 수 있습니다. 각 컨테이너 요소에 대한 adorner 기능을 사용하여이 문제를 해결합니다. 각 컨테이너 요소는 해당 요소의 adorner 레이어에 탭 인덱스를 그립니다. –