无法按名称获取MapControl元素

时间:2016-01-10 02:04:17

标签: c# uwp

我刚刚发现开发Windows应用程序(UWP)的新方法,我正面临一个我以前从未遇到过的问题。

我有这个地图控件:

<HubSection x:Uid="xxx" Header="Map">
  <DataTemplate>
    <Maps:MapControl x:Name="myMapControl" MapServiceToken="XXXXXXXX" Width="700" Height="655" />
  </DataTemplate>
</HubSection>

在我的代码后面,

myMapControl.MapElements.Add(mapIcon1);

但是我得到的错误是&#34; myMapControl&#34;在当前范围中未定义。如果我给出一个&#34; x:名字&#34;它可以工作到另一个元素(例如网格)。

如何在我的C#代码中获取MapControl? 或者,我如何将mapIcon绑定到地图?

感谢您的回答

1 个答案:

答案 0 :(得分:2)

对于DataTemplates,它们的内容直到它被加载才直接在Page Visual Tree中,所以一种方法,如果你只有很少的控件来获取页面中的MapControl,那么:

  <Hub>
        <HubSection>
            <DataTemplate>
                <Maps:MapControl x:Name="MyMapControl" Loaded="MyMapControl_Loaded"/>
            </DataTemplate>
        </HubSection>
    </Hub>

然后在Loaded事件中只有以下内容:

 private MapControl myMapControl;
    private void MyMapControl_Loaded(object sender, RoutedEventArgs e)
    {
        myMapControl = (sender as MapControl);
    }