【发布时间】:2019-01-22 12:00:45
【问题描述】:
我是 Xamarin.Forms 的新手,我有一个无法解决的问题。
当我点击一个按钮时,它应该导航到 RegistracijaKorisnika.xaml 页面(它是波斯尼亚语 .. 抱歉),但不是因为异常:
System.Reflection.TargetInvocationException:调用目标抛出异常
RegistracijaKorisnika.xaml 页面有 ViewModel 页面 RegistracijaKorisnikaViewModel.cs,当我放入 RegistracijaKorisnika.xaml.cs 行时:
BindingContext = new RegistracijaKorisnikaViewModel()
发生异常。
当我删除行时
BindingContext = new RegistracijaKorisnikaViewModel()
我可以导航到 RegistracijaKorisnika.xaml。 这是代码,我希望你能帮助我。
这是 RegistracijaKorisnika.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"
x:Class="ITJobFinder.View.RegistracijaKorisnika">
<ContentPage.Content>
<StackLayout>
<Entry Placeholder="Ime" x:Name="entryImeKorisnika" Text="{Binding ImeKorisnika}"/>
<Entry Placeholder="Prezime" x:Name="entryPrezimeKorisnika" Text="{Binding PrezimeKorisnika}"/>
<Entry Placeholder="Email" x:Name="entryEmailKorisnika" Text="{Binding EmailKorisnika}"/>
<Entry Placeholder="Password" x:Name="entryPasswordKorisnika" Text="{Binding PasswordKorisnika}"/>
<Entry Placeholder="Naziv zavrsene obrazovne institucije" x:Name="entryNazivFakulteta" Text="{Binding NazivObrazovanjaKOrisnika}"/>
<Entry Placeholder="Godina zavrsetka obrazovanja" x:Name="entryGodinaZavrsetkaObrazovanja" Text="{Binding GodinaZavrsetkaObrazovanja}"/>
<Button Text="Registruj se!" Command="{Binding SaveNewUser}"/>
</StackLayout>
</ContentPage.Content>
</ContentPage>
这是 RegistracijaKorisnika.xaml.cs
namespace ITJobFinder.View
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class RegistracijaKorisnika : ContentPage
{
public RegistracijaKorisnika ()
{
InitializeComponent ();
BindingContext = new RegistracijaKorisnikaViewModel();
}
}
}
这是 RegistracijaKorisnikaViewModel.cs
namespace ITJobFinder.ViewModel
{
public class RegistracijaKorisnikaViewModel : BaseViewModel
{
private string imeKorisnika;
private string prezimeKorisnika;
private string emailKorisnika;
private string passwordKorisnika;
private string nazivObrazovanjaKOrisnika;
private string godinaZavrsetkaObrazovanja;
public string ImeKorisnika
{
get => imeKorisnika;
set
{
imeKorisnika = value;
OnPropertyChanged();
}
}
public string PrezimeKorisnika
{
get => PrezimeKorisnika;
set
{
prezimeKorisnika = value;
OnPropertyChanged();
}
}
public string EmailKorisnika
{
get => emailKorisnika;
set
{
emailKorisnika = value;
OnPropertyChanged();
}
}
public string PasswordKorisnika
{
get => passwordKorisnika;
set
{
passwordKorisnika = value;
OnPropertyChanged();
}
}
public string NazivObrazovanjaKOrisnika
{
get => nazivObrazovanjaKOrisnika;
set
{
nazivObrazovanjaKOrisnika = value;
OnPropertyChanged();
}
}
public string GodinaZavrsetkaObrazovanja
{
get => godinaZavrsetkaObrazovanja;
set
{
godinaZavrsetkaObrazovanja = value;
OnPropertyChanged();
}
}
public ICommand SaveNewUser { get; private set; }
private DataBaseContext _context;
public RegistracijaKorisnikaViewModel()
{
_context = new DataBaseContext();
SaveNewUser = new Command(SaveUser);
}
void SaveUser()
{
Korisnik k = new Korisnik
{
ImeKorisnika = ImeKorisnika,
PrezimeKorisnika = PrezimeKorisnika,
EmailKorisnika = EmailKorisnika,
PasswordKorisnika = PasswordKorisnika,
GodinaZavrsetkaObrazovanja = GodinaZavrsetkaObrazovanja,
NazivObrazovanjaKOrisnika = NazivObrazovanjaKOrisnika
};
_context.Korisnici.Add(k);
_context.SaveChanges();
}
}
}
【问题讨论】:
-
你能把这行注释掉,然后再试一次:
SaveNewUser = new Command(SaveUser);吗?如果您使用的是视觉工作室,您可以在抛出异常后按 F5/继续吗?它很可能会在控制台输出中显示更详细的异常 -
@Csharpest 我评论了那行,但也有同样的例外。当我按继续时,这会显示在我的输出中
-
08-14 18:37:02.755 E/mono (12983):未处理的异常:08-14 18:37:02.755 E/mono (12983):System.Reflection.TargetInvocationException:异常已发生由调用的目标抛出。 ---> System.NullReferenceException:对象引用未设置为对象的实例
-
好吧,这对我们没有任何帮助。杰森说得好,看看他的回答。除此之外,它可能是您的 DBContext 或 BaseViewModel 类。或者您是否对 RegistracijaKorisnika 课程隐瞒了什么?
-
非常感谢您抽出宝贵时间,Jason 是对的。
标签: xaml xamarin exception xamarin.forms binding