質問

私はExpanderを含むいくつかのコントロールを含むリストを持っています。パンダ内私は外側のリストをオーバーレイしたい別のリストには、あります。

:ここでは簡単なREPROです
<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をセットコンバータを書いてみてください。項目が削除/追加されるこれで興味深いのは、正しく必ずすべての更新を行うことになります。

は、レイアウトに依存しないようにエクスパンダが必要ですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top