Маршрутизируемые события в wpf - PullRequest
0 голосов
/ 16 апреля 2009

Хорошо известный факт заключается в том, что перенаправленные события проходят только вверх или вниз по наследству, а не через все элементы.

Но не менее известный факт заключается в том, что обработчик событий может быть связан с общим родителем двух разрозненных элементов управления.

Мои вопросы: как, пожалуйста, несколько указателей.

У меня есть XAML, который выглядит как

<Grid Name="MainGrid">
    <Listbox Name="lb1"/>
    <Grid Name="InnerGrid">
       <Listbox Name="lb2"/>
    </Grid>
</Grid>

Обработчики событий мыши, определенные в «lb1», не будут запущены, так как они «похоронены» в «InnerGrid». Мой вопрос заключается в том, как я могу написать некоторый код в «MainGrid» или в другом месте, где запускаются обработчики событий, определенные в «lb1». Или может быть какой-то другой способ достижения этого.

Большое спасибо.

1 Ответ

1 голос
/ 17 апреля 2009

Я не совсем уверен, что именно вы спрашиваете, но, похоже, вы хотите, чтобы вас вызвали для событий, которые уже были обработаны.

Попробуйте это:

В вашем коде в конструкторе после InitializeComponent(), вызовите

this.AddHandler(RoutedEvent, Delegate, bool);

Передайте событие (MouseDown или т. Д.), Делегата для вызова (что-то вроде lb1_MouseDown), а затем true, чтобы указать, что вы хотите быть вызванным для событий, которые уже были обработаны.

...