2012-05-12 65 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索引。 –