0

我有一个全屏 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 控件吗?

非常感谢您的帮助,乔恩

4

1 回答 1

0

好的 - 我找到了解决方法。在 InnerGrid 上设置 Background="{x:Null}" 使其转发事件。像往常一样在 MSDN 上精美的无证 :-)

如果有人知道更多信息,我仍然想知道任何其他可用的方法。

非常感谢,乔恩

于 2013-01-28T12:13:35.047 回答