子元素的WPF Panel.ZIndex

时间:2012-05-12 05:10:32

标签: c# .net wpf

我正在开发一个小型的可视化设计器,我需要实现索引元素的功能。所有元素都有自己的可见性水平相互依赖。我没有将ZIndex用于主要元素,因此它们在可视树中显示。但是当它们处于设置索引模式时,所有元素都有一个带索引号的区域。问题是这些地区继承了父母的zindex。我试图为这些区域设置zindex = 1000,但它没有帮助。

<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>

如何让所有区域都超越所有主要元素?

谢谢!

1 个答案:

答案 0 :(得分:3)

ZIndex是组织兄弟姐妹的z顺序的索引(同一容器的子控件)

如果您希望元素位于“所有内容”之上,则需要添加一个位于所有内容之上的新容器。您无法从较低级别(例如此模板)指定此项。用户界面仍然是一个层次结构,据我所知,你无法打破它。