2015-10-16 44 views
0

在應用程序構造函數中不調用依賴項屬性設置程序,並且值僅在加載用戶控件後纔可用。那麼,將InitializeComponent()方法移至Loaded()方法是否安全?我可以將InitializeComponent()移動到Loaded()

+0

並不一定安全,沒有。 'Loaded'在構造函數完成後被調用,所以給你一個印象,把它放在'Loaded'中可以解決你的問題? –

+0

你的DP在做什麼需要這種行爲? –

+0

對於初學者來說,當我把它放在'Loaded()'中時它就起作用。 –

回答

0

我不知道這是否與您的問題有所幫助,但我只是讓VisualStateManger轉到它在加載事件當前狀態:

private void OnLoaded(object sender, RoutedEventArgs routedEventArgs) 
    { 
     VisualStateManager.GoToState(this, YourStateGroup.CurrentState.Name, false); 
    } 
0

保持InitializeComponent()的位置。相反,請使用Loaded事件。即

[Dependency] 
    public Foo Foo { get; set; } 

    public MainWindow() 
     { 
      InitializeComponent(); 

      Loaded += MainWindow_Loaded; 
     } 

    private void MainWindow_Loaded(object sender, System.Windows.RoutedEventArgs e) 
     { 
      // Propery injection should have taken place now, so do what you need to do with them 
     } 
+0

您想要在啓動時立即移除'Loaded'處理程序,以避免在控件被卸載並重新加載(例如重新加載)時多次執行該工作。 –

相關問題