无法在WPF中设置Canvas ZIndex

时间:2018-09-11 03:39:06

标签: c# wpf canvas

我有这样的代码xaml:enter image description here

现在我将Height中的wp_2更改为450,它会比stackMain大,我将Canvas.ZIndex="100"设置为wp_2可以显示所有但仍被stackPanel隐藏的部分:enter image description here有人知道要修复吗?谢谢大家!

3 个答案:

答案 0 :(得分:0)

1。给裕度-50 top使其从顶部开始(从顶部重新初始化)。

2。在包装面板中,每个子控件都从其上一个控件的结束位置开始。

(在这种情况下,黄色从红色的结尾开始。)  将Margin =“ 0,-50,0,0”设为黄色

<WrapPanel Background="Yellow" Height="50" Margin="0,-50,0,0" ></WrapPanel>

答案 1 :(得分:0)

对于您提到的使用Grid的方案是最佳解决方案。请参考以下代码:

<Grid Background="Black">
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <WrapPanel Name="Wp1" Background="Red"/>
        <WrapPanel Grid.Row="1" Name="Wp2" Background="Yellow" Height="500"/>

已编辑

由于您需要WrapPanel的另一层,而不是将其包装在Canvas中。

 <Grid x:Name="mainGrid" Background="Black">
                <Grid.RowDefinitions>
                    <RowDefinition Height="50"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <WrapPanel Name="Wp1" Background="Red"/>
                <Canvas  Grid.Row="1" Panel.ZIndex="100" Height="500" Width="{Binding ActualWidth, ElementName=mainGrid}">
                    <WrapPanel Name="Wp2" Background="Yellow" Height="400" Width="{Binding ActualWidth, ElementName=mainGrid}"/>
                </Canvas>
</Grid>

答案 2 :(得分:0)

也许您可以做这样的事情?

<Grid Background="Aquamarine" Margin="0 0 0 -270">
        <Grid Background="Black" Margin="0 10 0 313">
            <StackPanel Margin="0 0 0 -500">
                <WrapPanel Background="Red" Height="50"/>
                <WrapPanel Background="Yellow" Height="450"/>
            </StackPanel>
        </Grid>
    </Grid>