回答
这与OnVisualParentChanged
有些关系。在FrameworkElement.cs的实现中,它的确会有private void TryFireInitialized()
,而这又会调用protected virtual void OnInitialized(EventArgs e)
,所以你可以在那里挂钩。
它取决于你需要知道的信息。据我所知,唯一的地方得到通知,父母正在改变,并能够访问旧的父母是OnVisualParentChanged(旧的父母作为参数传入)。否则,任何其他地方挂钩你将只能够访问新的父母,因为它已经被改变。
您可能还想调查一些继承FrameworkElement的类并查看它们是否暴露了任何可以帮助您的其他属性或方法。
'TryFireInitialized()'只会触发'OnInitialized'一次。 – HerpDerpington
@ user1574054你是绝对正确的,谢谢你抓住那个 –
在我的测试中,Loaded Unloaded会在父母更改时触发,所以我会说可以安全地回复他们。 但是,如前所述,如果您挂钩OnVisualParentChanged(在_Unloaded被称为VisualParent时已为空),您只能访问旧父项 如果这是您的担忧,则覆盖OnVisualParentChanged非常简单。
void _Loaded(object sender, RoutedEventArgs e)
{
DoSmthng();
}
void _Unloaded(object sender, RoutedEventArgs e)
{
DoSmthngElse();
}
protected override void OnVisualParentChanged(DependencyObject oldParent)
{
DoSmthngOther();
// Call base class to perform standard event handling.
base.OnVisualParentChanged(oldParent);
}
- 1. WPF触发器更改父项属性
- 2. 如何从MVVM WPF中的子项更改父控件?
- 3. 如何检测WPF中父对象的子项更改?
- 4. 在cocos2D中更改CCSprite的父项
- 5. 检测VisualTree或LogicalTree中的父项是否已在WPF控件中更改
- 6. 更改分支的父项
- 7. 是否可以更改WPF控件的父项
- 8. 父亲的WPF UserControl更改了事件
- 9. 如何更改CakePHP中的ARO父项
- 10. 每当控件更改WPF中的值时更新父级
- 11. 在QML中更改父项属性时的子项属性
- 12. 验证WPF中的选项卡更改(查看更改)
- 13. 在TFS中将变更集合到父项的父项中
- 14. WPF获取menuItem的父项
- 15. 从iframe更改父项的状态
- 16. WinAPI更改ListView控件的父项
- 17. 如何从WPF中的子视图更改父视图属性?
- 18. 更改WPF依赖项属性ActualWidth == 0
- 19. “WPF UserControl.Unloaded”选项卡更改与卸载
- 20. 如何更改wpf listview项目文本
- 21. WPF DataTrigger的组合框项目更改
- 22. WPF Catch ObservableCollection的项目属性更改
- 23. WPF MVVM阻止选项卡更改
- 24. 更改WPF项目的主要内容
- 25. 更改WPF项目的启动文件
- 26. 如何在DOM中更改其父项时“保留”实体?
- 27. css在同一父项中更改元素
- 28. 在`select`中更改`option`的父项将删除事件
- 29. 你可以在python tkinter中更改小部件的父项吗?
- 30. 如何在Windows Phone 8.1的xaml中更改DataContext的父项
我不确定你需要做什么,但我经常使用IsVisibleChanged事件,如果我需要一些等待,直到一切都完成加载。 – jugg1es