我有一个TabControl
where 每个TabItem
都有一个单独的控件作为其Content
元素。现在,我可以使用UserControl.Loaded
EventTrigger 在切换到选项卡时轻松执行情节提要。但是,我还想在从一个选项卡切换到另一个选项卡时运行退出动画(即允许旧的内容控件动画离开,然后是新的内容控件的入口动画)。
是否可以使用标准 WPF 构造来做到这一点?
如果没有,我将如何开发处理此问题的自定义解决方案?
编辑:
我继续做了一个修改的 TabControl,它扩展了基本的 TabControl 并覆盖了它的OnSelectionChanged
方法,如下所示:
protected override void OnSelectionChanged(SelectionChangedEventArgs e)
{
if (e.AddedItems.Count == 1 && e.RemovedItems.Count == 1)
{
var oldTab = e.RemovedItems[0] as TabItem;
if (oldTab != null)
{
var exitStoryboard = /** code to find the storyboard **/
if (exitStoryboard != null)
{
exitStoryboard.Completed = (_, __) => base.OnSelectionChanged(e);
exitStoryboard.Begin();
return;
}
}
}
base.OnSelectionChanged(e);
}
这有效,除非我在选项卡之间单击得太快,在这种情况下 base.OnSelectionChanged 永远不会被调用,大概是因为情节提要不再处于活动状态。提示?