当我点击它时,如何将用户控制带到另一个用户控制前面

时间:2014-01-30 16:43:01

标签: c# wpf wpf-controls

我在一个窗口中有4个用户控件>> 我想要做的就是当我点击它时,将它们中的任何一个带到所有这些前面。

3 个答案:

答案 0 :(得分:0)

您可以使用Panel.SetZIndex将控件放在前面

答案 1 :(得分:0)

使用Panel.ZIndex属性。可以找到更多here

示例

<Canvas Background="Ivory"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">

  <Canvas>
    <Rectangle Height="60" Width="60" Fill="Gold"/>
    <Rectangle Height="50" Width="70" Fill="Coral"/>
    <Rectangle Height="40" Width="80" Fill="Teal"/>
    <Rectangle Height="30" Width="90" Fill="Black"/>
  </Canvas>

  <Canvas Canvas.Left="120">
    <Rectangle Canvas.ZIndex="99" Height="60" Width="60" Fill="Gold"/>
    <Rectangle Canvas.ZIndex="98" Height="50" Width="70" Fill="Coral"/>
    <Rectangle Canvas.ZIndex="97" Height="40" Width="80" Fill="Teal"/>
    <Rectangle Canvas.ZIndex="96" Height="30" Width="90" Fill="Black"/>
  </Canvas>

</Canvas>

注意第二组Rectangle对象是如何从第一组Rectangle对象以反向z顺序分层的:

enter image description here

默认和显式Z顺序

答案 2 :(得分:0)

你必须将所有元素都放在画布中

<Canvas x:Name="Canvas1" HorizontalAlignment="Left" Margin="97,131,0,150" Width="153">
        <Rectangle x:Name="E1" Canvas.ZIndex="98" Fill="#FFF4F4F5" Stroke="Black" Width="100" Height="100" Canvas.Left="53" Canvas.Top="60" MouseDown="E1_MouseDown"/>
        <Rectangle x:Name="E2" Canvas.ZIndex="99" Fill="#FFF4F4F5" Stroke="Black" Width="88" Height="134" MouseDown="E2_MouseDown"/>
    </Canvas>

然后你必须在MouseDown事件

中添加一些代码

P.S&gt;&gt;我只举了两个元素E1E2

的例子
    private void E1_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {

        int zOrder = Canvas.GetZIndex(E2)+1;
        Canvas.SetZIndex(E1,zOrder);

    }

    private void E2_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {

        int zOrder = Canvas.GetZIndex(E1)+1;
        Canvas.SetZIndex(E2,zOrder);

    }