从两个元素更改 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
。
这里的问题是您有不同的面板,您有 Canvas
和 Grid
。在网格中你有按钮,在 canvas 中你想要 show/hide 的控件。 Panel.Zindex
属性 适用于同一面板中的项目,因此在这种情况下,降低 zindex 值将不起作用。一个解决方案是将 Visibility
属性 设置为 Collapsed
(如 :Nikhil Agrawal
所说),这样视觉项目的行为就像它不在视觉树中一样。
这个洞有帮助...
我有一个带有两个按钮的简单 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
。
这里的问题是您有不同的面板,您有 Canvas
和 Grid
。在网格中你有按钮,在 canvas 中你想要 show/hide 的控件。 Panel.Zindex
属性 适用于同一面板中的项目,因此在这种情况下,降低 zindex 值将不起作用。一个解决方案是将 Visibility
属性 设置为 Collapsed
(如 :Nikhil Agrawal
所说),这样视觉项目的行为就像它不在视觉树中一样。
这个洞有帮助...