2017-02-10 105 views
0

我試圖找出我的控制已經顯示後如何觸發一個事件。例如。C#WPF火災事件後Custrom自控充分展示

private void MainWindow_Ready(object sender, DataSet e) 
    { 
      foreach (table in e.Tables) 
      { 
       control = new LeagueControl(table); 
       SP1.Children.Add(control); 
      } 
     }); 
    } 

    void SomeMethod() 
    { 

    } 

因此,添加到SP1的控件實際上顯示在我的窗口中,我想運行方法SomeMethod();

這樣做我能得到我所需要的。

  int count = 0; 
      foreach (DataTable table in e.Tables) 
      { 
       count++; 
       control = new LeagueControl(table); 
       SP1.Children.Add(control); 
       if (count == e.Tables.Count) 
       { 
        Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new Action(() => 
        { 
         Console.WriteLine("X"); 
        })); 
       } 
      } 

真的,雖然它是爲我工作,但有沒有更好的方法?我不確定它爲什麼可以工作,也許有人可以詳細說明,謝謝。

+0

我試圖用你的回答陳湖,但委託函數運行方法的控制實際上是顯示我的窗戶前。所以不好,但謝謝。 –

回答

0

傳遞一個委託函數作爲事件處理程序的Loaded事件。

代碼:

control.Loaded += delegate(object o, RoutedEventArgs e){ 
    SomeMethod(); 
} 
+0

看到這個委託函數運行我的方法之前我添加到SP1的控件顯示,所以這不幸的是不會幫助。 –