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

ありがとうございますが、残念ながらそれは私を助けません。他の要素を含むことができるので、階層が非常に深くなり、いくつかの要素が非表示になる可能性があります。なぜなら、それらはコンテナ要素の可視範囲に配置されないためですから、要素が可視かどうかを認識することができます。この問題を解決するために、各コンテナ要素のアドレナ機能を使用します。各コンテナ要素は、その要素のアドバタ層にタブインデックスを描画します。 –