0
나는 Expander
을 포함하여 일부 컨트롤을 포함하는 목록을 가지고 있습니다. 익스팬더 내에 또 다른리스트가 있는데, 외부리스트를 오버레이하고 싶습니다. Expander
가 열릴 도착하면캔버스가 목록 안에있는 확장기 ZOrder
<Page.Resources>
<x:Array x:Key="array1" Type="sys:String">
<sys:String>item 1</sys:String>
<sys:String>item 2</sys:String>
<sys:String>item 3</sys:String>
</x:Array>
<DataTemplate x:Key="buttonTemplate">
<Button Content="{Binding}"/>
</DataTemplate>
<DataTemplate x:Key="expanderItem">
<StackPanel>
<Expander Header="Options">
<Canvas>
<StackPanel Panel.ZIndex="999" Background="Red">
<Label>A1</Label>
<Label>A2</Label>
<Label>A3</Label>
<Label>A4</Label>
</StackPanel>
</Canvas>
</Expander>
<Label BorderBrush="Black" BorderThickness="2" Content="{Binding}"/>
</StackPanel>
</DataTemplate>
</Page.Resources>
<Grid>
<ListBox ItemsSource="{StaticResource array1}" ItemTemplate="{StaticResource expanderItem}"/>
</Grid>
, 내부 레이블이 같은 DataTemplate
에서의 레이블과 동일한 수준의 렌더링 얻을 나중에 내용이 목록의 항목 : 다음은 간단한 생식입니다. 변경하지 않고 Panel.ZIndex
패널로 옮겨 보았습니다.
나는 다음과 같은 스타일을 추가하는 경우 : 그것은 제대로 같은 목록 항목에서 항목을 중첩되지만, 여전히 나중에 목록 항목의 내용으로 혼합 렌더
<Style TargetType="{x:Type Expander}">
<Style.Triggers>
<Trigger Property="IsExpanded" Value="True">
<Setter Property="Panel.ZIndex" Value="999"/>
</Trigger>
</Style.Triggers>
</Style>
합니다.
(I이 상당히 명백한 레이아웃 문제가 의심,하지만 난 그것을 찾을 수 없어.)
당신은 항목의 인덱스를 기반으로 DataTemplate을의 Z- 색인을 설정하는 컨버터를 쓰는 시도 할 수
레이아웃과 독립적으로 어떤 의미인지 잘 모르겠습니다. 화면의이 섹션에 다른 항목을 오버레이하기 위해 확장기가 필요하지만 목록의 항목 위치에 상대적으로 배치됩니다 ... 의미가 있습니까? –
예, 맞습니다. (방금 확장기를 확장하면 레이아웃에 영향을주지 않지만 다른 항목에 겹쳐진 것처럼 보이기 때문에 레이아웃에 영향을 미치고 다른 항목이 아래로 밀려나도록 할 수 있음을 의미합니다.) 변환기 아이디어에 대해 어떻게 생각하십니까? 그것은 그럴듯 해 보입니까? –