从两个元素更改 ZIndex

Change the ZIndex from two element

我有一个带有两个按钮的简单 WPF 应用程序。这是我的 xaml 文件中的代码:

<Grid x:Name="grigliaPulsantiBody" Visibility="Visible"
        Grid.Column="1" Grid.Row="0" Panel.ZIndex="2"
        HorizontalAlignment="Center" VerticalAlignment="Center"
        Width="Auto" Height="Auto">
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>

    <!--PRIMA RIGA-->
    <Button x:Name="buttonLookNao" Content="Guarda NAO negli occhi" 
        Grid.Column="0" Grid.Row="0"
        Click="button_Click" Width="200" Height="100" Background="Red" />

    <Button x:Name="buttonLookParent" Content="Guarda Genitore negli occhi" 
        Grid.Column="1" Grid.Row="1"
        Click="button_Click" Width="200" Height="100" Background="Green"/>
    <!--FINE PRIMA RIGA-->
</Grid>

这是我创建的另一个控件:

<local:RiepilogoEsercizio x:Name="riepilogoEsercizio" VerticalAlignment="Top" HorizontalAlignment="Right"
   Margin="0,-600,180,0" Panel.ZIndex="0"
   Grid.Row="0" Grid.Column="0" Visibility="Hidden"/>

如果我点击一个按钮,元素 "riepilogoEsercizio" 改变他的 ZIndex,所以我有这个

 Canvas.SetZIndex(riepilogoEsercizio, 999);

没关系。 现在我想隐藏这个元素。我使用此代码:

private void annullaBoxUscita(object sender, RoutedEventArgs e)
{
    try
    {
    myLoadBoxRiepilogoAnimation.From = 1.0;
    myLoadBoxRiepilogoAnimation.To = 0.0;
    //mostro la finestra dei risultati dell esercizio
    Storyboard.SetTargetName(myLoadBoxRiepilogoAnimation, riepilogoEsercizio.Name);
    Storyboard.SetTargetProperty(myLoadBoxRiepilogoAnimation, new PropertyPath(UIElement.OpacityProperty));
    //riepilogoEsercizio.labelTempo.Content = gioco.tempoEsecuzioneEsercizio;
    //riepilogoEsercizio.labelRisposteEsatte.Content = gioco.numeroRisposteCorrette;
    //riepilogoEsercizio.labelTentativi.Content = gioco._numeroTentativi;
    //riepilogoEsercizio.Visibility = Visibility.Visible;

    Canvas.SetZIndex(riepilogoEsercizio, -800);
    Canvas.SetZIndex(grigliaPulsantiBody, 2);
    myStoryboardBoxRiepilogo.Begin(this);
    riepilogoEsercizio.IsEnabled = false;
    }
    catch (Exception exc)
    {
    log.Error("ButtonEsci_Click: ", exc);
    this.Close();
    Process.GetCurrentProcess().Kill();
    }
}

此代码有效,元素 "riepilogoEsercizio" 被隐藏,但我不能点击第二个按钮 "buttonLookParent",因为元素 "riepilogoEsercizio" 被隐藏但它在这个按钮上.我尝试更改 ZIndex 设置但未找到。

Visibility 设置为 Collapsed

这里的问题是您有不同的面板,您有 CanvasGrid。在网格中你有按钮,在 canvas 中你想要 show/hide 的控件。 Panel.Zindex 属性 适用于同一面板中的项目,因此在这种情况下,降低 zindex 值将不起作用。一个解决方案是将 Visibility 属性 设置为 Collapsed(如 :Nikhil Agrawal 所说),这样视觉项目的行为就像它不在视觉树中一样。

这个洞有帮助...