Мою проблему трудно объяснить, поэтому я создал пример для показа здесь.
Когда в приведенном ниже примере показано окно WPF, отображаются три кнопки, каждая из которых имеет свой текст.
Когда нажимается любая из этих кнопок, я предполагаю, что ее текст должен отображаться в сообщении, но вместо этого все они отображают одно и то же сообщение, как если бы они использовали обработчик событий последней кнопки.
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);
}
}
}
Кто-нибудь знает, что не так?