2013-11-20 5 views
2

У меня есть прямоугольник с непрозрачностью 0, который покрывает сетку, содержащую различные элементы управления. Идея состоит в том, что этот прямоугольник будет исчезать, чтобы скрыть элементы управления фона в какой-то момент. В настоящий момент прямоугольник закрывает элементы управления, поэтому вы не можете нажимать на элементы управления, так как щелчок будет поглощен прямоугольником. В идеале лучший способ полностью отключить прямоугольник от любого эффекта до начала анимации.Стоп наложенного прямоугольника, получающего событие wpf click

Вот сократить версию кода у меня есть:

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

Почему бы не установить 'Visibility' прямоугольника в' Collapsed'? В вашем методе buttonClicked вы также можете изменить/анимировать свойство «Видимость» на «Видимый». – sthotakura

ответ

1

Вы можете установить Visibility прямоугольника Collapsed, так что он не питается щелчками мыши. И вы можете вернуть его в Visible в свой метод buttonClicked.

Вот что я пробовал:

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

Смежные вопросы