C# 子元素的WPF Panel.ZIndex

C# 子元素的WPF Panel.ZIndex,c#,.net,wpf,C#,.net,Wpf,我正在开发一个小型的可视化设计器,我需要实现一个索引元素的功能。所有图元都有自己的可见性级别,并且相互依赖。我没有对主要元素使用ZIndex,所以它们在可视化树中的显示方式是一样的。但所有处于设置索引模式的元素都有一个带有索引号的区域。问题是这些区域继承了它们父母的zindex。我试图为这些区域设置zindex=1000,但没有帮助 <ControlTemplate x:Key="IndexRegion" TargetType="ContentControl"> &l

我正在开发一个小型的可视化设计器,我需要实现一个索引元素的功能。所有图元都有自己的可见性级别,并且相互依赖。我没有对主要元素使用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>

---这是一个索引区域
如何使所有区域位于所有主要元素之上


谢谢大家!

ZIndex是一个索引,用于组织同级(同一容器的子控件)的z顺序


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

请组织代码。你可以在开始的时候按4格,这是非常令人失望的,我考虑过,但我试着保持希望,因为这会使解决方案变得更重(解决方案会有所不同,但不会太重。只需添加一个顶部网格/画布,并向其中添加由对象层次结构中较低的项绑定的子项。这仅仅是可视化树结构与对象结构不同的结果。谢谢,但不幸的是,这对我没有帮助,因为我有一个可以包含其他元素,因此层次结构可能非常深,而某些元素可能不可见,因为它们没有放置在容器元素的可见边界上,所以这让我意识到元素是否可见。我想我将为每个容器元素使用装饰器功能来解决此问题。每个容器元素将绘制选项卡Index用于其装饰层上的元素。创建对象层次结构时,可以将可视化树的元素绑定到层次结构中的任何对象/属性。可以将可见性属性添加到对象,并在可视化树的多个级别上绑定到该属性。是的,但我相信这比使用装饰功能更困难e、 因为如果我们使用装饰器功能,我们不必知道某个元素是否可见。第二个原因是,我们必须对不在全局级别的每个元素进行x,y坐标变换,因为它们的x,y取决于容器元素的左上角。我们不必使用装饰器ei进行此计算疗法。