【发布时间】:2015-03-07 02:12:49
【问题描述】:
我不想这么快就提出另一个问题,但我似乎无法让它正常工作。
我有一个UserControl 和一个StoryBoard 设置为在Unloaded RoutedEvent 发生时运行。但是,我也有代码,以便在单击按钮时它将UserControl 从其包含的StackPanel 中删除。我希望看到的是,当单击删除按钮时,StoryBoard 运行,然后UserControl 从StackPanel 中删除。
已经有很多代码了,所以我不知道该放什么。让我知道你想让我放置什么代码来帮助我。
我所拥有的只是UserControl 中的RoutedEvent,它引发了删除(或卸载)事件:
public static readonly RoutedEvent deleteEvent =
EventManager.RegisterRoutedEvent("delete", RoutingStrategy.Bubble,
typeof(RoutedEventHandler), typeof(TimeEntry));
private void raiseDeleteEvent()
{
RoutedEventArgs newDeleteEvent = new RoutedEventArgs(deleteEvent,this);
RaiseEvent(newDeleteEvent);
}
private void deleteButton_Click(object sender, RoutedEventArgs e)
{
raiseDeleteEvent();
}
然后,主窗口中的两个方法注册到被抛出的事件:
private void entryAdder_Click(object sender, RoutedEventArgs e)
{
currentSession.addEntry(DateTime.Now);
scrollStack.Children.Add(currentSession.currentTimeEntry);
currentSession.currentTimeEntry.delete += currentTimeEntry_delete;
}
void currentTimeEntry_delete(object sender, RoutedEventArgs e)
{
scrollStack.Children.Remove(sender as TimeEntry);
}
最后是UserControl,还有它的StoryBoards:
<Storyboard x:Key="Ondelete">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="UserControl">
<EasingDoubleKeyFrame KeyTime="0" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="UserControl">
<EasingDoubleKeyFrame KeyTime="0" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
【问题讨论】:
-
我能想到的最简单的方法是使用计时器来延迟删除,但我不知道这是不是最好的方法
标签: c# wpf xaml storyboard routed-events