2013-03-02 4 views

Répondre

0

Il est facile de parcourir tous les enfants de la grille et d'attacher l'événement de manière appropriée.

Dans votre XAML assurez-vous de donner un nom pour votre réseau:

<Grid x:Name="gr01"... 

Vous pouvez écrire une fonction pour fixer les événements et appeler en cas Window_Loaded.

namespace AttachEventDemo { 
    public partial class MainWindow : Window { 
     // ... usual initialization code goes here 
     private void Window_Loaded(object sender, RoutedEventArgs e) { 
     AttachEvent(); 
     } 

     private void AttachEvent() { 
     foreach (var item in gr01.Children) { 
      switch (item.GetType().ToString()) { 
       case "System.Windows.Controls.Button": 
        Button b = item as Button; 
        b.Click += b_Click; 
        txtLog.Text = "Added click event for button " + b.Name + Environment.NewLine + txtLog.Text; 
        break; 

       case "System.Windows.Controls.CheckBox": 
        CheckBox cb = item as CheckBox; 
        cb.Checked += cb_Checked; 
        txtLog.Text = "Added click event for checkkbox " + cb.Name + Environment.NewLine + txtLog.Text; 
        break; 

       default: 
        break; 
      } 
     } 
     } 

     void cb_Checked(object sender, RoutedEventArgs e) { 
     CheckBox cb = sender as CheckBox; 
     txtLog.Text = "CheckBox " + cb.Name + " checked changed!" + Environment.NewLine + txtLog.Text; 
     } 

     private void b_Click(object sender, RoutedEventArgs e) { 
     Button b = sender as Button; 

     txtLog.Text = "Button " + b.Name + " was clicked!" + Environment.NewLine + txtLog.Text; 
     } 
    } 
} 
+0

manière programmatique manière) 10x! – Roman

Questions connexes