当我尝试推送到新页面时,我遇到了以下错误。
(我使用的是Xamarin的4.6.0.800表格)
{System.ArgumentException: An element with the key 'NewAccountLogo' already exists in NameScope
Parameter name: name
at Xamarin.Forms.Internals.NameScope.Xamarin.Forms.Internals.INameScope.RegisterName (System.String name, System.Object scopedElement) [0x0000e] in D:\a\1\s\Xamarin.Forms.Core\Internals\NameScope.cs:21
at amici.NewAccount.InitializeComponent () [0x00078] in C:\Users\X\source\repos\amici\amici\amici\obj\Debug\netstandard2.0\NewAccount.xaml.g.cs:46
at amici.NewAccount..ctor () [0x0000f] in C:\Users\X\source\repos\amici\amici\amici\NewAccount.xaml.cs:26
at amici.Logon+<OnCreateAccountClick>d__3.MoveNext () [0x0002a] in C:\Users\X\source\repos\amici\amici\amici\logon.xaml.cs:119 }
这个错误似乎很简单,所以我回去重命名了元素,然后在我的项目中搜索了相同的名称。(只有一个)。重新编译并重试,消息相同,但使用了新名称?所以我删除了元素,尝试重新编译并重试,有趣的是,我得到了相同的消息,但下一个元素?所以现在我在想,也许错误信息不太正确,或者试图告诉我其他事情。我就是想不出来。下面是我的名字。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
NavigationPage.HasNavigationBar="True"
Title="New Account"
x:Class="amici.NewAccount">
<ContentPage.Content >
<ScrollView>
<Grid>
<StackLayout Margin="20" Padding="10" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1">
<Image x:Name="NewAccountLogo"/>
<Entry x:Name="NewEmail" Placeholder="Email"/>
<Entry x:Name="EmailConfirm" Placeholder="Confirm Email"/>
<Label Text="Password between 6 and 20 characters; must contain at least one lowercase letter, one uppercase letter, one numeric digit." Margin="0,0,0,5"></Label>
<Entry x:Name="NewPassword" IsPassword="true" Placeholder="Password"/>
<Entry x:Name="PasswordConfirm" IsPassword="true" Placeholder="Confirm Password"/>
<Label x:Name="bntCreatAccountButton" TextColor="Blue" Text="Create Account" HorizontalOptions="Center" Margin="0,25,0,0">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="OnCreateAccount" NumberOfTapsRequired="1" />
</Label.GestureRecognizers>
</Label>
</StackLayout>
<ActivityIndicator x:Name="WaitIcon" IsRunning="{Binding IsBusy}" VerticalOptions="Center" HorizontalOptions="Center" />
</Grid>
</ScrollView>
</ContentPage.Content>
</ContentPage>
代码背后:
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class NewAccount : ContentPage
{
public NewAccount()
{
InitializeComponent ();
this.InitializeComponent();
this.BindingContext = this;
this.IsBusy = false;
var bkgrndGradient = new Gradient()
{
Rotation = 150,
Steps = new GradientStepCollection()
{
new GradientStep(Color.White, 0),
new GradientStep(Color.White, .5),
new GradientStep(Color.FromHex("#ccd9ff"), 1)
}
};
ContentPageGloss.SetBackgroundGradient(this, bkgrndGradient);
NewAccountLogo.Source = ImageSource.FromFile("logo.png");
}
async private void OnCreateAccount(object sender, EventArgs e)
{
string Message = string.Empty;
string title = string.Empty;
bool results = false;
IsBusy = true;
try
{
if (ComparisonBehavior.CompareValues(NewEmail.Text, NewPassword.Text, EmailConfirm.Text,PasswordConfirm.Text, ref Message, ref title))
{
await Task.Delay(1000);
results = RestController.CreateAccount(NewEmail.Text, NewPassword.Text);
IsBusy = false;
if (results)
{
await DisplayAlert("New Account Created.", "Thank You! Please check your email (junk mail) to activate your subscription.", "OK");
await Application.Current.MainPage.Navigation.PopAsync();
}else
{
if (Application.Current.Properties["resp"].ToString() == "Account exist")
{
await DisplayAlert("Account Exist", "Sorry this email already exist!", "OK");
}
}
}else
{
await DisplayAlert(title, Message, "OK");
}
}catch (Exception ex)
{
await DisplayAlert("internal Error", ex.Message, "OK");
} finally{
IsBusy = false;
}
}
}
任何帮助都将不胜感激。
迈克