画布落后于内容控制

时间:2019-08-07 08:25:04

标签: c# wpf

我在WPF中拥有用户控制权。有一个网格,它有两个孩子。一张画布和一个内容控件。我希望此透明画布位于内容控件之上,但仍位于其后面。

<Grid x:Name="g1" Margin="0" Background="Black">
    <ContentControl x:Name="cc1" Panel.ZIndex="100" Content="{Binding Content}"/>
    <Canvas x:Name="c1" Panel.ZIndex="500">
        <Label Canvas.Top="10" Canvas.Left="10" Content="Text 1" Foreground="White" />
        <Label Canvas.Top="10" Canvas.Right="10" Content="Text 2" Foreground="White" />
        <Label Canvas.Bottom="10" Canvas.Left="10" Content="Text 3" Foreground="White" />
        <Label Canvas.Bottom="10" Canvas.Right="10" Content="Text 4" Foreground="White" />
    </Canvas>
</Grid>

我在这里想念什么?

3 个答案:

答案 0 :(得分:0)

您可以

  • 在网格中的ContentControl之后声明画布。

  • 设置Canvas的ZIndex属性-值越高,控件将越“向前”显示。

答案 1 :(得分:0)

在任何面板中,元素从第一个声明的元素开始一直显示在后面。

因此,您只需在以下位置声明Canvas:

<Grid x:Name="g1" Margin="0" Background="Black">
    <ContentControl x:Name="cc1" Content="{Binding Content}"/>
    <Canvas x:Name="c1">
        <Label Canvas.Top="10" Canvas.Left="10" Content="Text 1" Foreground="White" />
        <Label Canvas.Top="10" Canvas.Right="10" Content="Text 2" Foreground="White" />
        <Label Canvas.Bottom="10" Canvas.Left="10" Content="Text 3" Foreground="White" />
        <Label Canvas.Bottom="10" Canvas.Right="10" Content="Text 4" Foreground="White" />
    </Canvas>
</Grid>

或者,将Canvas Panel.ZIndex属性设置为1或更高。

<Canvas x:Name="c1" Panel.ZIndex="1">
...

答案 2 :(得分:0)

尝试这样:

<Grid x:Name="g1" Margin="0" Background="Black">
        <ContentControl x:Name="cc1" Content="{Binding Content}" Background="White"/>
        <Canvas x:Name="c1" Background="Red">
            <Label Canvas.Top="10" Canvas.Left="10" Content="Text 1" Foreground="White" />
            <Label Canvas.Top="10" Canvas.Right="10" Content="Text 2" Foreground="White" />
            <Label Canvas.Bottom="10" Canvas.Left="10" Content="Text 3" Foreground="White" />
            <Label Canvas.Bottom="10" Canvas.Right="10" Content="Text 4" Foreground="White" />
        </Canvas>
    </Grid>

我添加了两种颜色,ContentControl用白色,Canvas用红色供您识别。 您是否可以看到,在此示例中,您只能看到红色,这意味着CanvasContentControl上方。