В настоящее время я работаю над программой, в которой к окну динамически добавлено несколько «значков».Каждый из этих «значков» (который на самом деле представляет собой изображение с меткой под ним) представляет устройство в сети.Когда пользователь дважды щелкает значок, ему нужно открыть окно, в котором пользователь может изменить свойства этого конкретного устройства.
У меня уже есть окно, созданное вместе с кодом для динамического добавления изображений вокно.Моя проблема в том, что, поскольку каждый значок добавляется динамически, они используют один и тот же обработчик событий.Поскольку каждый значок использует один и тот же обработчик, кажется, что каждый значок не может открыть свое соответствующее устройство.
Вот часть кода, которая запускается, когда пользователь добавляет новое устройство вместе с используемым им обработчиком событий:
//create new device
devices.Add(new Device(ipaddress, hn, un, pw, cm, lx, ly, tp, pl, nt, dn));
images.Add(new Image());
//create image for main window
images[images.Count - 1].Width = 50;
images[images.Count - 1].Height = 35;
images[images.Count - 1].Stretch = Stretch.Fill;
BitmapImage logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri(deviceImages[tp], UriKind.Relative);
logo.CacheOption = BitmapCacheOption.OnLoad;
logo.EndInit();
images[images.Count - 1].Source = logo;
images[images.Count - 1].Cursor = Cursors.Hand;
images[images.Count - 1].Margin = new System.Windows.Thickness(lx-25, ly-25, 0, 0);
images[images.Count - 1].VerticalAlignment = System.Windows.VerticalAlignment.Top;
images[images.Count - 1].HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
images[images.Count - 1].MouseDown += new MouseButtonEventHandler(deviceIcon_MouseDown);
ConnexMainWindow.grid1.Children.Add(images[images.Count - 1]);
public void deviceIcon_MouseDown(object sender, MouseButtonEventArgs e)
{
ConnexDeviceWindow deviceWindow = new ConnexDeviceWindow();
deviceWindow.Show();
}
Как вы можете видеть, я не в данный моментпередача окна устройства устройству, поскольку на самом деле нет способа сделать это из обработчика событий.
Мой вопрос таков: есть ли способ динамически создавать обработчик событий для каждого добавляемого изображения, чтобы я мог передать функции соответствующее устройство, которое представляет каждое изображение?