2010-08-09 4 views
0

나는 확장기를 정의했습니다;adorners 출혈을 통해

<Canvas Panel.ZIndex="99"> 
<Expander HorizontalAlignment="Left" VerticalAlignment="Top"> 
    <StackPanel Background="White"> 
    <TextBlock>Some Stuff in the Expander</TextBlock> 
    </StackPanel> 
</Expander> 
</Canvas> 

이렇게하면 확장자가 다른 내용을 그릴 수 있습니다. 내가 겪고있는 문제는 확장자 아래의 내용이 장식되어있는 경우 (내 경우에는 사용자 입력 오류를 나타내는 빨간색 테두리가 표시됨) adorner가 항상 확장기를 통해 피를 흘리는 경우입니다.

답변

2

랩과 같이 일을하여 AdornerDecorator에서 다른 컨트롤 : 기본적으로

<Grid> 
    <Canvas Panel.ZIndex="99"> 
     <Expander HorizontalAlignment="Left" VerticalAlignment="Top"> 
      <StackPanel Background="White"> 
       <TextBlock>Some Stuff in the Expander</TextBlock> 
      </StackPanel> 
     </Expander> 
    </Canvas> 
    <AdornerDecorator> 
     <!-- Other content here --> 
     <StackPanel> 
      <TextBox Text="{Binding Foo, ValidatesOnDataErrors=True}"/> 
     </StackPanel> 
    </AdornerDecorator> 
</Grid> 

는 유일한 AdornerDecorator는 윈도우에 의해 생성 된 것입니다. Adorners는 모든 Window의 내용 앞에있는 레이어를 렌더링합니다. AdornerDecorator에서 다른 요소를 래핑하면 렌더링 할 수있는 새로운 AdornerLayer가 생성됩니다. Canvas를 AdornerDecorator보다 높은 ZIndex에 배치하면 Canor가 AdornerLayer 앞에 렌더링됩니다.

관련 문제