2012-05-12 67 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

谢谢,但不幸的是它并不能帮助我,因为我有一个容器元素可以包含其他元素,因此层次结构可以非常深,而且某些元素可以是不可见的,因为它们不放置在容器元素的可见边界上,所以它让我意识到元素是否可见。使用每个容器元素的装饰者能力来解决这个问题。每个容器元素都会在其装饰图层上绘制其元素的Tab索引。 –