更改活动选项卡时阻止执行UserControl构造函数

时间:2011-03-11 17:31:11

标签: .net wpf user-interface visualstatemanager

我有Tab控件,有两个选项卡,每个选项卡包含一个UserControl,UserControls与Transitions一起定义了Visual States。

我想解决的问题是,每当我更改活动标签时,即使控件 已经处于某种状态,Visual State Transition故事板也会运行,并且不需要改变。

我已经跟踪了这一事实,即更改选项卡会导致新显示的选项卡中的所有子UserControls的构造函数运行。有没有办法避免这种情况?

2 个答案:

答案 0 :(得分:2)

这是因为每次更改选项卡项时,都会从VisualTree中卸载以前选项卡的内容。这里有很多关于此主题的讨论。请通过以下链接

WPF TabControl - Preventing Unload on Tab Change?

http://www.hardcodet.net/2008/01/wpf-loaded-event-fired-repeatedly

http://eric.burke.name/dotnetmania/2009/04/26/22.09.28

How to preserve control state within tab items in a TabControl

希望这有帮助

答案 1 :(得分:0)

事实证明,因为我绑定了Tab的Content,它正在卸载和重新加载。更改为StaticResources并使用DataContext解决了我的问题。