2011-09-27 3 views
1

기본적으로 그림자 요소 (경로)에 ZIndex를 넣고 다른 UI 요소에 zindex를 넣어 사용자 컨트롤의 간단한 Path 요소에 그림자 효과를 만들려고합니다.이 2 요소는 루트가 캔버스이고 사용자 정의 컨트롤에서 예상대로 작동하는 사용자 정의 컨트롤에 있습니다.ui 요소의 zindex를 부모 캔버스를 기준으로하고 포함 캔버스를 기준으로하지 않는 방법은 무엇입니까?

이 컨트롤의 인스턴스가 두 개 포함 된 캔버스가 있습니다. 각 컨트롤의 섀도 요소를 다른 섀도우가 아닌 요소 아래에 표시하고 싶습니다. 그것의 작동하지 않는 및 하나의 컨트롤의 그림자가 아닌 다른 그림자 요소 위에 나타납니다. 사용자 정의 컨트롤에 대한 부모 캔버스의 ZIndex 인덱스를 변경하면 사용자 컨트롤의 두 요소가 다른 사용자 컨트롤 요소 위에 놓입니다. ZIndex는 모든 캔버스가 아닌 포함 캔버스에만 관련되어 있기 때문에이 경우라고 가정합니다.

모든 UI 요소를 동일한 캔버스에 넣지 않고이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

3

경로를 하나의 Canvas로 모으는 방법을 찾아야 할 것 같습니다. 캔버스가 렌더링 될 때 그것은 직접적인 아이들의 Z- 인덱스만을 존중합니다. 다음과 같이이를 테스트 할 수 있습니다

<Canvas x:Name="LayoutRoot" Background="White"> 
    <Rectangle Width="100" Height="100" Fill="Green" 
       Canvas.Left="20" Canvas.Top="20" 
       Stroke="Black" 
       Canvas.ZIndex="10"/> 
    <Canvas Canvas.ZIndex="5"> 
    <Rectangle Width="100" Height="100" Fill="Blue" 
       Canvas.Left="30" Canvas.Top="30" 
       Stroke="Black" 
       Canvas.ZIndex="16"/> 
    </Canvas> 
</Canvas> 

을 위의 예에서, 파란색 사각형이 녹색 사각형의 Z- 색인보다 큰 16의 Z- 색인을 가지고이 포함되어 있기 때문에, 그것은, 아래의 렌더링 된 경우에도 캔버스 내에서 ZIndex가 5 인 경우 포함 캔버스를 제거하고 파란색 직사각형이 녹색 위에 렌더링됩니다.

+0

그것은 유감 스럽습니다. 당신의 도움을 주셔서 감사합니다. –

관련 문제