检查参数是否已在windows universal c#代码中传递

时间:2017-07-21 15:41:07

标签: c# win-universal-app

传递参数作为允许用户返回并进行更改的方式

 private void go_back_btn_Click(object sender, RoutedEventArgs e)
    { 

         Frame.Navigate(typeof(TruckRegistrationPage), this.truckdetails);  
    }

现在在trruck注册页面上

        protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        this.changeddetails= (TruckRegistrationDetails)e.Parameter;
        //set the form fields based on the details
        if (e.Parameter) //this throws an error of boolean not casted
        {
            truck_reg_no.Text = changeddetails.reg_no;
            transporter_name.Text = truckdetails.owner_id;

             .......assign other xaml controls

        }

    } 

传递的参数类型为TruckRegistrationDetails,这是一个包含以下属性的类

    class TruckRegistrationDetails
    {
      public int id { get; set; }
      public string reg_no { get; set; }
       public int truck_category { get; set; }

        .......others
    }

如何检查是否已传递任何参数,从而分配xaml控件值

2 个答案:

答案 0 :(得分:0)

将您的代码更改为此

<table>
  <thead>
    <tr>
      <td>Title</td>
      <td>Title</td>
      <td>Title</td>
      <td>Title</td>
    </tr>
  </thead>
</table>

您的检查是布尔值,但protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); changeddetails = (TruckRegistrationDetails)e.Parameter; if (changeddetails != null) { truck_reg_no.Text = changeddetails.reg_no; //do what ever you want ^^ } } 是一个对象。以下是MSDN https://msdn.microsoft.com/de-de/library/windows/apps/windows.ui.xaml.navigation.navigationeventargs.parameter.aspx

的链接

答案 1 :(得分:0)

我在使用这种方法时遇到错误,因为在某些时候使用空字符串的 NavigationEventArgs.Parameter 调用 OnNavigatedTo。当对象被强制转换为我传递的对象类型时,这会导致 Cast 异常。 我用过:

        if (args.Parameter is DeviceInformation)
        {
            DeviceInformation deviceInfo = (DeviceInformation)args.Parameter;
            //Do something with object
        }

这首先检查对象的类型,看它是否与预期的匹配,然后强制转换不会抛出异常。