![](/img/trans.png)
[英]Xamarin.Forms + Master Detail + TalkBack on Androind
[英]Probems with a Navigation Drawer /Master Detail (Xamarin.Forms) on VS17
我正在嘗試實現導航抽屜/主菜單細節,但出現此錯誤,但是我的代碼確定,我什至將Xamarin.Forms升級到2.4,但仍然遇到此錯誤:
local:MasterPage not found in xmlns clr-namespace:Diabetics;assembly=Diabetics
完整的錯誤列表:
Xamarin.Forms.Xaml.XamlParseException: Position 7:6. Type local:MasterPage not found in xmlns clr-namespace:Diabetics;assembly=Diabetics
at Xamarin.Forms.Xaml.CreateValuesVisitor.Visit (Xamarin.Forms.Xaml.ElementNode node, Xamarin.Forms.Xaml.INode parentNode) [0x00040] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Xaml\CreateValuesVisitor.cs:58
at Xamarin.Forms.Xaml.ElementNode.Accept (Xamarin.Forms.Xaml.IXamlNodeVisitor visitor, Xamarin.Forms.Xaml.INode parentNode) [0x000b1] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Xaml\XamlNode.cs:175
at Xamarin.Forms.Xaml.RootNode.Accept (Xamarin.Forms.Xaml.IXamlNodeVisitor visitor, Xamarin.Forms.Xaml.INode parentNode) [0x00054] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Xaml\XamlNode.cs:223
at Xamarin.Forms.Xaml.XamlLoader.Visit (Xamarin.Forms.Xaml.RootNode rootnode, Xamarin.Forms.Xaml.HydratationContext visitorContext) [0x00053] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Xaml\XamlLoader.cs:122
at Xamarin.Forms.Xaml.XamlLoader.Load (System.Object view, System.String xaml) [0x00046] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Xaml\XamlLoader.cs:76
at Xamarin.Forms.Xaml.XamlLoader.Load (System.Object view, System.Type callingType) [0x0002f] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Xaml\XamlLoader.cs:56
at Xamarin.Forms.Xaml.Extensions.LoadFromXaml[TXaml] (TXaml view, System.Type callingType) [0x00000] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Xaml\ViewExtensions.cs:36
at Diabetics.MainActivity.InitializeComponent () [0x00001] in /Users/haleem/Projects/Diabetics/iOS/obj/iPhoneSimulator/Debug/Diabetics.iOS.Main.MainActivity.xaml.g.cs:22
at Diabetics.MainActivity..ctor () [0x00008] in /Users/haleem/Projects/Diabetics/Diabetics/Main/MainActivity.xaml.cs:13
at Diabetics.App..ctor () [0x0000f] in /Users/haleem/Projects/Diabetics/Diabetics/App.xaml.cs:16
at Diabetics.iOS.AppDelegate.FinishedLaunching (UIKit.UIApplication app, Foundation.NSDictionary options) [0x00007] in /Users/haleem/Projects/Diabetics/iOS/AppDelegate.cs:16
at at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Users/builder/data/lanes/4991/4a279c9a/source/xamarin-macios/src/UIKit/UIApplication.cs:79
at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/builder/data/lanes/4991/4a279c9a/source/xamarin-macios/src/UIKit/UIApplication.cs:63
at Diabetics.iOS.Application.Main (System.String[] args) [0x00001] in /Users/haleem/Projects/Diabetics/iOS/Main.cs:17
我的MasterPageDetail類MainActivity.cs
using System;
using System.Collections.Generic;
using Diabetics.Models;
using Xamarin.Forms;
namespace Diabetics
{
public partial class MainActivity : MasterDetailPage
{
public MainActivity()
{
InitializeComponent();
masterPage.ListView.ItemSelected += OnItemSelected;
/*
if (Device.RuntimePlatform == Device.Windows)
{
MasterBehavior = MasterBehavior.Popover;
}
*/
}
void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = e.SelectedItem as MasterPageItem;
if (item != null)
{
Detail = new NavigationPage((Page)Activator.CreateInstance(item.TargetType));
masterPage.ListView.SelectedItem = null;
IsPresented = false;
}
}
}
}
然后我的Xaml for MainActivity.xaml
:
<?xml version="1.0" encoding="UTF-8"?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Diabetics;assembly=Diabetics"
x:Class="Diabetics.MainActivity">
<MasterDetailPage.Master>
<local:MasterPage x:Name="masterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<local:HomeActivity />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
</MasterDetailPage>
這是我的MasterPage.cs
類:
using System;
using System.Collections.Generic;
using Diabetics.Models;
using Xamarin.Forms;
namespace Diabetics
{
public partial class MasterPage : ContentPage
{
public ListView ListView { get { return listView; } }
public MasterPage()
{
InitializeComponent();
var masterPageItems = new List<MasterPageItem>();
masterPageItems.Add(new MasterPageItem
{
Title = "Today",
IconSource = "resorts.png",
TargetType = typeof(Today)
});
masterPageItems.Add(new MasterPageItem
{
Title = "Therapy",
IconSource = "ic_login.png",
TargetType = typeof(Therapy)
});
masterPageItems.Add(new MasterPageItem
{
Title = "Settings",
IconSource = "ic_login.png",
TargetType = typeof(Settings)
});
listView.ItemsSource = masterPageItems;
}
}
}
這是MasterPage.xaml
:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
Icon ="nav_icon.png" Title="Ea "
x:Class="Diabetics.MasterPage">
<StackLayout>
<Image Source="featured_newline_1.png" Margin="0,1,0,0"/>
<ListView x:Name="listView" Margin="0,10,0,0" VerticalOptions="FillAndExpand" SeparatorVisibility="None">
<ListView.ItemTemplate>
<DataTemplate>
<ImageCell Text="{Binding Title}" ImageSource="{Binding IconSource}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>
好。 我在處理共享項目時遇到了挑戰,下面是解決該問題的步驟,但是請記住,解決方案中的每個平台都有一個程序集,但是共享項目(您編寫了大部分代碼)不。:
該錯誤的解決方案是簡單地從xmlns:local字符串中刪除assembly=MyAssemblyName
。 它應該是xmlns:local="clr-namespace:MyNameSpace;"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.