未为 wpf 中相同类型的 UserControl 触发未加载事件
Posted
技术标签:
【中文标题】未为 wpf 中相同类型的 UserControl 触发未加载事件【英文标题】:Unloaded event not fired for same type of UserControl in wpf 【发布时间】:2013-08-08 12:34:11 【问题描述】:我的 WPF 应用程序中有 2 个选项卡控件 (UserControl)。由于这两个选项卡控件都是基于后端数据动态创建的,所以我有两个相同类类型但对象不同的选项卡控件(通过检查两者的内存地址来确认,它们是不同的)
我遇到这种奇怪的情况,当我在相同类型的选项卡 (UserControl) 之间切换时,未触发 Unload 事件。但是,当我从/切换到不同类型的选项卡时,会调用 Unload 事件。
我想处理除 Unload 事件之外的其他事件吗?
请帮我解决这个问题。我被卡住了:(
【问题讨论】:
你想做什么?据微软称,Unloaded
事件Occurs when the element is removed from within an element tree of loaded elements.
【参考方案1】:
在花费更多时间和调查之后,我可以找到解决问题的方法。
出现此问题是因为 WPF 只是在每次我在相同类型的 Tab 控件之间切换时更改我的 UserControl 的 DataContext,并且由于 UsrControl 是相同类型,即使不同的对象,Unload 事件也没有被触发。
这个问题的解决方案是不处理Unload事件,而是处理UserControl的DataContextChanged事件。
谢谢大家的回答!!
干杯, 纳扬
【讨论】:
【参考方案2】:为此,您需要订阅 OnSelectionChanged 事件,如下所示:
XAML:
<TabControl SelectionChanged="TabControl1_OnSelectionChanged">
代码隐藏:
private void TabControl1_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
//do whatever
【讨论】:
以上是关于未为 wpf 中相同类型的 UserControl 触发未加载事件的主要内容,如果未能解决你的问题,请参考以下文章