omportamento estranho ao usar a expressão lambda nos botões WPF, clique no evento
Meu problema é difícil de explicar, então criei um exemplo para mostrar aqu
Quando a janela WPF no exemplo abaixo é exibida, três botões são exibidos, cada um com um texto diferent
Quando qualquer um desses botões é clicado, presumo que seu texto deve ser exibido na mensagem, mas todos exibem a mesma mensagem, como se todos estivessem usando o manipulador de eventos do último botão.
public partial class Window1 : Window {
public Window1() {
InitializeComponent();
var stackPanel = new StackPanel();
this.Content = stackPanel;
var n = new KeyValuePair<string, Action>[] {
new KeyValuePair<string, Action>("I", () => MessageBox.Show("I")),
new KeyValuePair<string, Action>("II", () => MessageBox.Show("II")),
new KeyValuePair<string, Action>("III", () => MessageBox.Show("III"))
};
foreach (var a in n) {
Button b = new Button();
b.Content = a.Key;
b.Click += (x, y) => a.Value();
stackPanel.Children.Add(b);
}
}
}
Alguém sabe o que está errado