リストのキャンバス内部でパンダのZORDER
質問
私はExpander
を含むいくつかのコントロールを含むリストを持っています。パンダ内私は外側のリストをオーバーレイしたい別のリストには、あります。
<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>
Expander
が開かれます場合は、内側のラベルは同じ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>
これは、同じリストの項目で適切にオーバーレイアイテムだろうが、それでも、後のリスト項目から内容と混合レンダリングます。
(私はこれはかなり明白なレイアウトの問題である疑いがあるが、私はそれを見つけることができませんでした。)
解決
あなたは、リスト内のアイテムのインデックスに基づいてのDataTemplateでのZIndexをセットコンバータを書いてみてください。項目が削除/追加されるこれで興味深いのは、正しく必ずすべての更新を行うことになります。
は、レイアウトに依存しないようにエクスパンダが必要ですか?
所属していません StackOverflow