Xamarin.Forms异常System.Reflection.TargetInvocationException:调用的目标已引发异常

时间:2018-08-15 15:16:54

标签: xaml xamarin exception xamarin.forms binding

我是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();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

此获取将导致自引用循环-您的获取应使用小写的内部变量,而不是大写的属性名称

tf.estimator.Estimator