初始化组件“不存在”和“无定义”用于 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:
<Page x:Class="MyNamespace.MyCanvasCodeInline">
...
代码隐藏:
namespace MyNamespace
{
public partial class MyCanvasCodeInLine // : Page - not needed but implied
...
您应该检查的事项:
- 代码隐藏类定义为
partial
- 代码隐藏类限定名称(命名空间 + 类名)与 XAML 根节点的
x:Class
属性相同 - XAML 根节点是实现 IComponentConnector (Page、Window、UserControl 等)的某个类。
执行此操作的另一种方法是检查在 XAML 文件"下"生成的xaml.cs
文件,并将其partial class
定义与代码隐藏类进行比较。它们应匹配类型、名称和命名空间。
确保 XAML 文件具有正确的生成操作(应为"页面")。 我已经看到Visual Studio在项目之间复制/粘贴XAML文件时更改了这一点。
如果不正确,即使类名和命名空间在 XAML 和代码隐藏之间匹配,也会收到此错误。