【发布时间】:2012-08-17 18:30:42
【问题描述】:
我有一个TabControl,其中每个TabItem 都有一个单独的控件作为其Content 元素。现在,我可以使用UserControl.Loaded EventTrigger 在切换到选项卡时轻松执行情节提要。但是,我还想在从一个选项卡切换到另一个选项卡时运行退出动画(即允许旧的 Content 控件以动画方式离开,然后是新的 Content 控件的入口动画)。
是否可以使用标准 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 永远不会被调用,大概是因为情节提要不再处于活动状态。提示?
【问题讨论】:
标签: wpf storyboard tabcontrol selectionchanged