传递参数作为允许用户返回并进行更改的方式
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控件值
答案 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
}
这首先检查对象的类型,看它是否与预期的匹配,然后强制转换不会抛出异常。