InitializeComponent"不存在"并且"没有定义"用于XAML地图控件

时间:2015-06-15 11:11:42

标签: c# .net wpf visual-studio xaml

我正在开发一个简单的地图应用,可以使用GeoCoordinateWatcher放大并关注我的位置。问题是,每当我完成所有操作后,InitializeComponents()总会抛出异常而我的 C#代码不会识别我的 XAML 地图控件。这是某种错误还是我只是个傻瓜?

代码示例:

public MainPage()
{
    this.InitializeComponent(); // This whole line is underlined red

    this.NavigationCacheMode = NavigationCacheMode.Required;
}


public void CenterUserLocation()
{
    // Center MyMap on user location
    this.MyMap.Center = myPoint; //MyMap is underlined red
    this.MyMap.ZoomLevel = 10;  //MyMap is underlined red
}

更新:(类别定义C#)

namespace MapApp{

public sealed partial class MainPage : Page
{
    GeoCoordinateWatcher watcher;
    private Geopoint myPoint;

更新:(XAML)

<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MapApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:Maps="using:Windows.UI.Xaml.Controls.Maps"
    x:Class="MapApp.MainPage"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Page.BottomAppBar>
        <CommandBar>

            <!-- LOCATION BUTTON -->
            <AppBarButton x:Uid="LocateAppBarButton"
                          x:Name="LocateAppBarButton"
                          Label="location"
                          Icon="Map"
                          Click="LocateAppBarButton_Click" />


        </CommandBar>
    </Page.BottomAppBar>

    <Grid>
        <Maps:MapControl x:Name="MyMap" HorizontalAlignment="Left" VerticalAlignment="Top" Height="580" Width="400"/>
    </Grid>
</Page>

2 个答案:

答案 0 :(得分:0)

您的XAML和代码隐藏应该是这样的:

XAML:

    <Page x:Class="MyNamespace.MyCanvasCodeInline">
    ...

代码隐藏:

    namespace MyNamespace
    {
        public partial class MyCanvasCodeInLine // : Page - not needed but implied
        ...

你应该检查的事情:

  1. 代码隐藏类定义为partial
  2. 代码隐藏类限定名(名称空间+类名)与XAML根节点的x:Class属性相同
  3. XAML根节点是一个实现IComponentConnector(Page,Window,UserControl等)的类。
  4. 另一种方法是检查“XAML文件下”生成的xaml.cs文件,并将其partial class定义与代码隐藏类进行比较。它们应匹配类型,名称和名称空间。

答案 1 :(得分:0)

确保您的XAML文件具有正确的Bui​​ld Action(应为Page)。在项目之间复制/粘贴XAML文件时,我已经看到Visual Studio对此进行了更改。

如果这是不正确的,即使您的XAML和隐藏代码之间的类名称和名称空间匹配,也会出现此错误。