2017-02-10 4 views
0

コントロールが表示された後にイベントを発生させる方法を理解しようとしています。例えば。Custromコントロールが完全に表示された後のC#WPF Fireイベント

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

デリゲート関数をeventHandlerとしてLoadedイベントに渡します。

コード:

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

このデリゲート関数が私のメソッドを実行してから、SP1に追加するコントロールが表示される前に、この残念なことにヘルプは表示されません。 –

関連する問題