C# 当我点击另一个控件时,如何将用户控件置于其前面

C# 当我点击另一个控件时,如何将用户控件置于其前面,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我在一个窗口中有4个用户控件>> 我想做的就是当我点击它时,让它们中的任何一个出现在所有它们的前面。您可以使用面板。ZIndex属性将控制权放在前面。可以找到更多 样品 <Canvas Background="Ivory" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <Canvas> <Rectangle Height="60" Width="60" Fill="

我在一个窗口中有4个用户控件>>
我想做的就是当我点击它时,让它们中的任何一个出现在所有它们的前面。

您可以使用
面板。ZIndex
属性将控制权放在前面。可以找到更多

样品

<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>

请注意,第二组矩形对象是如何以与第一组矩形对象相反的z顺序分层的:


默认和显式Z顺序

您必须像这样将所有元素放在画布中

<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>

为什么不直接使用。可见?将其他设置为False,将前面的设置为True?如何使用c实现这一点#
    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);

    }