J'ai un tableau de boutons qui est généré dynamiquement au moment de l'exécution. J'ai la fonction de clic sur le bouton dans mon code, mais je ne trouve pas de moyen de définir le nom du clic du bouton dans le code. Donc,
quel est le code équivalent pour XAML:
<Button x:Name="btn1" Click="btn1_Click">
Ou, que dois-je placer pour "????" dans le code suivant:
Button btn = new Button()
btn.Name = "btn1";
btn.???? = "btn1_Click";
Button btn = new Button();
btn.Name = "btn1";
btn.Click += btn1_Click;
private void btn1_Click(object sender, RoutedEventArgs e)
{
// do something
}
Ce qui suit devrait faire l'affaire:
btn.Click += btn1_Click;
// sample C#
public void populateButtons()
{
int xPos;
int yPos;
Random ranNum = new Random();
for (int i = 0; i < 50; i++)
{
Button foo = new Button();
Style buttonStyle = Window.Resources["CurvedButton"] as Style;
int sizeValue = ranNum.Next(50);
foo.Width = sizeValue;
foo.Height = sizeValue;
foo.Name = "button" + i;
xPos = ranNum.Next(300);
yPos = ranNum.Next(200);
foo.HorizontalAlignment = HorizontalAlignment.Left;
foo.VerticalAlignment = VerticalAlignment.Top;
foo.Margin = new Thickness(xPos, yPos, 0, 0);
foo.Style = buttonStyle;
foo.Click += new RoutedEventHandler(buttonClick);
LayoutRoot.Children.Add(foo);
}
}
private void buttonClick(object sender, EventArgs e)
{
//do something or...
Button clicked = (Button) sender;
MessageBox.Show("Button's name is: " + clicked.Name);
}
Je ne pense pas que WPF supporte ce que vous essayez de réaliser, c'est-à-dire assigner une méthode à un bouton en utilisant le nom de la méthode ou btn1.Click = "btn1_Click". Vous devrez utiliser l'approche suggérée dans les réponses ci-dessus, c'est-à-dire enregistrer l'événement de clic de bouton avec la méthode appropriée btn1.Click + = btn1_Click;
Vous devez placer sous la ligne
btn.Click = btn.Click + btn1_Click;