2013-11-20 36 views
2

我有一个不透明度为0的矩形,覆盖了包含各种控件的网格。这个想法是,这个矩形会淡入,在某个时刻隐藏背景控件。此时,矩形覆盖控件,因此点击将被矩形吸收,因此无法单击控件。理想情况下,完全禁用矩形不起作用直到动画开始的某种方式最好。停止覆盖矩形接收wpf单击事件

下面的代码的缩减版本,我有:

XAML:

<Grid> 
    <Grid> 
     <Label Content="Some text" /> 
     <Button Content="A button" Click="buttonClicked" /> 
    </Grid> 

    <Rectangle x:Name="rectOverlay" Opacity="0" /> 
</Grid> 

CS:

using System.Windows.Media.Animation; 

private void buttonClicked(object sender, RoutedEventArgs e) 
{ 
    rectOverlay.BeginAnimation(Rectangle.OpacityProperty, new DoubleAnimation(1, TimeSpan.FromSeconds(0.5))); 
} 
+0

为什么不设置矩形为'Collapsed'的'Visibility'?在buttonClicked方法中,您还可以将'Visibility'属性更改/动画为'Visible'。 – sthotakura

回答

1

您可以设置矩形的VisibilityCollapsed,让它不会吃点鼠标。您可以在buttonClicked方法中将其设置回Visible

这里是我的尝试:

XAML:

<Grid> 
    <Grid> 
     <Label Content="Some text" /> 
     <Button Content="A button" Click="ButtonBase_OnClick" /> 
    </Grid> 

    <Rectangle x:Name="rectOverlay" Opacity="0" Fill="Green"/> 
</Grid> 

buttonClicked代码:

rectOverlay.Visibility = Visibility.Visible; 
rectOverlay.BeginAnimation(Rectangle.OpacityProperty, new DoubleAnimation(1, TimeSpan.FromSeconds(0.5))); 
+0

精美的作品,谢谢! – mbdavis

+0

很酷。如果它帮助你,你可以把它标记为答案,这样它也可以帮助别人。 – sthotakura

+0

会做什么,只是等待接受答案定时器... – mbdavis