初始化组件“不存在”和“无定义”用于 XAML 映射控件

本文关键字:不存在 用于 XAML 映射 控件 无定义 组件 初始化 定义 | 更新日期: 2023-09-27 17:56:20

我正在开发一个简单的地图应用程序,该应用程序将使用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>

初始化组件“不存在”和“无定义”用于 XAML 映射控件

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 等)的某个类。

执行此操作的另一种方法是检查在 XAML 文件"下"生成的xaml.cs文件,并将其partial class定义与代码隐藏类进行比较。它们应匹配类型、名称和命名空间。

确保 XAML 文件具有正确的生成操作(应为"页面")。 我已经看到Visual Studio在项目之间复制/粘贴XAML文件时更改了这一点。

如果不正确,即使类名和命名空间在 XAML 和代码隐藏之间匹配,也会收到此错误。