我有一个全屏 Bing 地图控件。在顶部,我想覆盖各种其他控件。
<Grid>
<maps:Map x:Name="Map" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
<Grid Style="{StaticResource LayoutRootStyle}" Background="Transparent"
x:Name="InnerGrid">
<Grid.RowDefinitions>
<RowDefinition Height="132" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="700" />
<ColumnDefinition Width="350" />
</Grid.ColumnDefinitions>
... Content ...
问题是 InnerGrid 消耗了我需要地图控件接收的鼠标事件。将背景设置为透明没有任何用处。
所以,我找到了 RoutedEvents 的东西:
internal sealed partial class PageCodeBehind : Page
{
public PageCodeBehind()
{
InitializeComponent();
InnerGrid.AddHandler(PointerPressedEvent, new PointerEventHandler(OnPointerPressedEvent), true);
InnerGrid.AddHandler(PointerMovedEvent, new PointerEventHandler(OnPointerMovedEvent), true);
}
private void OnPointerPressedEvent(object sender, PointerRoutedEventArgs pointerRoutedEventArgs)
{
// I can hit a breakpoint here...
var peer = FrameworkElementAutomationPeer.FromElement(GigMap) as MapAutomationPeer;
peer.RaiseAutomationEvent(...);
所以 - 我可以捕获事件,但我不知道如何在 Map 控件上触发事件。看过自动化同行的东西 - 似乎他们关心比鼠标按下更高级的概念,例如打开工具提示等。
知道如何将所有事件从 InnerGrid 控件转发到 Map 控件吗?
非常感谢您的帮助,乔恩