WPF перенаправляет событие, но не обрабатывается обработчиком - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть следующее перенаправленное событие:

public static readonly RoutedEvent ItemMouseDownEvent = EventManager.RegisterRoutedEvent(
    "ItemMouseDown", RoutingStrategy.Bubble, typeof(ItemMouseDownEventHandler), typeof(BindableGrid));

public delegate void ItemMouseDownEventHandler(object sender, ItemMouseDownEventArgs e);

public class ItemMouseDownEventArgs : RoutedEventArgs
{
    public object Item { get; set; }
}

public event ItemMouseDownEventHandler ItemMouseDown
{
    add { AddHandler(ItemMouseDownEvent, value); }
    remove { RemoveHandler(ItemMouseDownEvent, value); }
}

И я запускаю его так (этот код вызывается, я установил точку останова):

var args = new ItemMouseDownEventArgs
{
    Item = ((FrameworkElement)sender).DataContext,
    RoutedEvent = ItemMouseDownEvent
};
RaiseEvent(args);

Iиметь страницу XAML, использующую событие:

<local:BindableGrid x:Name="starSystemMap" ArraySource="{Binding SpaceObjectArray}" CellSize="64" BackgroundImage="/Images/Starfield.png" ItemMouseDown="starSystemMap_ItemMouseDown">
...
</local:BindableGrid>

и обработчик события (WIP):

private void starSystemMap_ItemMouseDown(object sender, BindableGrid.ItemMouseDownEventArgs e)
{
    switch (e.Item)
    {
        case null:
            MessageBox.Show("Space... the final frontier... is very, very empty...");
            break;
    }
}

Теперь, даже если событие вызывается, обработчик события никогда не вызывается -почему это?Как я могу получить обработчик события для моего настраиваемого перенаправленного события?

1 Ответ

0 голосов
/ 24 сентября 2018

У меня были дополнительные BindableGrid оверлеи поверх BindableGrid, который я пытался щелкнуть;Я должен был установить IsHitTestVisible="False" на оверлеях, чтобы клик проходил через сетку, которую я хотел щелкнуть.

...