代码之家  ›  专栏  ›  技术社区  ›  ElaVnla

WPF C#系统。NullReferenceException:“对象引用未设置为对象的实例。”[重复]

  •  -1
  • ElaVnla  · 技术社区  · 2 年前

    我用的是WPF。NET5.0框架。我试图显示一个值,我将其传递到一个文本框中,供用户编辑当前值。

    这是密码

        public EditUserDetailsPage1(User user)
        {
            InputFullName.Text = user.Full_Name;
            InputFirstName.Text = user.First_Name;
            InputLastName.Text = user.Last_Name;
            InputEmail.Text = user.Email;
            inputUsername.Text = user.Username;
            InitializeComponent();
        }
    

    这是XAML

    <TextBox Style="{StaticResource TextBoxExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="Full Name " VerticalAlignment="Top" hc:InfoElement.Placeholder="Enter full name" Margin="24,75,564,0" Name="InputFullName"/>
    <TextBox Style="{StaticResource TextBoxExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="First Name  " VerticalAlignment="Top" hc:InfoElement.Placeholder="Enter First Name" Margin="439,75,296,0" Name="InputFirstName"/>
    <TextBox Style="{StaticResource TextBoxExtend}" hc:TitleElement.TitlePlacement="Left" hc:TitleElement.Title="Last Name   " VerticalAlignment="Top" hc:InfoElement.Placeholder="Enter last Name" Margin="709,75,26,0" Name="InputLastName"/>
    <TextBox Style="{StaticResource TextBoxExtend}" hc:TitleElement.TitlePlacement="Left" hc:TitleElement.Title="Email" VerticalAlignment="Top" hc:InfoElement.Placeholder="UserEmail@gmail.com" Margin="24,142,564,0" Name="InputEmail"/>
    <TextBox Style="{StaticResource TextBoxExtend}" hc:TitleElement.TitlePlacement="Left" hc:TitleElement.Title="Username" VerticalAlignment="Top" hc:InfoElement.Placeholder="Enter username" Margin="439,142,253,0" x:Name="inputUsername"/>
    

    我在其他页面上也使用过这种方法,效果非常好。但对于这一页,它给了我这个错误

    系统NullReferenceException:“对象引用未设置为对象的实例。”

    我尝试了其他方法,比如先声明

        User passeduser;
        public EditUserDetailsPage1(User user)
        {
    
            passeduser = user;
    
            InputFullName.Text = passeduser.Full_Name;
            InputFirstName.Text = passeduser.First_Name;
            InputLastName.Text = passeduser.Last_Name;
            InputEmail.Text = passeduser.Email;
            inputUsername.Text = passeduser.Username;
            InitializeComponent();
        }
    

    正如你在这里看到的,有一个值正在被检索 enter image description here

    但它仍然给我一个错误。我遵循了我在其他页面上使用的相同方法,但它似乎只适用于此页面。非常感谢您的帮助!

    1 回复  |  直到 2 年前
        1
  •  1
  •   Loocid    2 年前

    因为你想用 InputFullName 在它被创建之前。

    在WPF中,UI元素是在运行时创建的 InitializeComponent .

    试试这个:

    public EditUserDetailsPage1(User user)
    {
        InitializeComponent();
    
        InputFullName.Text = user.Full_Name;
        InputFirstName.Text = user.First_Name;
        InputLastName.Text = user.Last_Name;
        InputEmail.Text = user.Email;
        inputUsername.Text = user.Username;
            
    }