我有以下路由事件:
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);
我有一个使用该事件的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;
}
}
现在,即使引发了事件,也永远不会调用事件处理程序-这为什么呢?如何获取自定义路由事件的事件处理程序?
答案 0 :(得分:1)
在我要点击的for (DataSnapshot ing : postSnapshot.child("foods").getChildren()) {
String name = ing.child("productName").getValue(String.class);
String quantity = ing.child("quantity").getValue(String.class);
String productId = ing.child("productId").getValue(String.class);
AllOrders order = new AllOrders(productId, name, quantity);
myfoods.add(order);
}
上方,我还有BindableGrid
叠加层;我必须在叠加层上设置BindableGrid
,这样点击才能“通过”到我想单击的网格。