回答
這與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