我正在开发一个简单的地图应用,可以使用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>
答案 0 :(得分:0)
您的XAML和代码隐藏应该是这样的:
XAML:
<Page x:Class="MyNamespace.MyCanvasCodeInline">
...
代码隐藏:
namespace MyNamespace
{
public partial class MyCanvasCodeInLine // : Page - not needed but implied
...
你应该检查的事情:
partial
x:Class
属性相同另一种方法是检查“XAML文件下”生成的xaml.cs
文件,并将其partial class
定义与代码隐藏类进行比较。它们应匹配类型,名称和名称空间。
答案 1 :(得分:0)
确保您的XAML文件具有正确的Build Action(应为Page)。在项目之间复制/粘贴XAML文件时,我已经看到Visual Studio对此进行了更改。
如果这是不正确的,即使您的XAML和隐藏代码之间的类名称和名称空间匹配,也会出现此错误。