Я рисую несколько объектов Path в холст WPF на основе коллекции. Я хочу, чтобы всплывающее окно отображалось с некоторой информацией о конкретном элементе в коллекции на мыши над Путь. Тем не менее, я не уверен, как отслеживать, на какой путь запускается событие (использование отправителя дает информацию только о Пути, а не о том, какая коллекция была нарисована). Как она стоит у меня есть это:Отслеживание того, что произошло событие мыши мыши.
Добавление формы & событие:
For (int i = 0; i < Collection.Count ; i++)
{
Path p = new Path();
p.MouseEnter += P_MouseEnter;
...
TrackerCanvas.Children.Add(p);
}
и позже, событие, которое является общим для всех из них:
private void P_MouseEnter(object sender, MouseEventArgs e)
{
dialogPopUp.IsOpen = true;
//no way of knowing which collection object triggered event
}
Сначала я попытался простирающийся MouseEventHandler чтобы сделать пользовательский объект, чтобы я мог, скажем, передать некоторую информацию делегату:
p.MouseEnter += new MyPathMouseEventHandler(i, P_MouseEnter);
Но это не сработает, поскольку MouseEventHandler запечатан и путь. MouseEnter нужен MouseEventHandler.
Тогда я подумал, может быть, я мог бы расширить Path и создать MyPath, который имеет свойство «IndexOfPath» или другую полезную информацию, которую я мог бы ссылаться на отправителя. Например:
MyPath path = (MyPath)sender;
MyItem = Collection[path.IndexOfPath];
Однако путь запечатан ... Так что это вне окна.
Кто-нибудь знает, как я мог это сделать?
'var path = (Path) отправитель;'. Разве это не должен быть объект «Путь», который запускал «MouseEnter»? –
Возможно, мне следовало бы лучше сформулировать название. Да, я могу узнать Путь, но Путь не содержит никакой информации о том, на какой объект был нарисован Путь, если вы понимаете, что я имею в виду? Не уверен, как сделать заголовок понятным, но я отредактировал описание, чтобы лучше объяснить его. – Joe