我尝试将一些Windows Phone 8项目移植到当前的UWP,并且陷入了我在旧项目中使用的代码片段.
private void Restaurant_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
string types = "restaurant";
string title = "restaurant";
string url = string.Format("/NearbyPlaces.xaml?latitude={0}&longitude={1}&types={2}&title={3}", LocationLatitude.Text, LocationLangitude.Text, types, title);
NavigationService.Navigate(new Uri(url, UriKind.Relative));
}
Run Code Online (Sandbox Code Playgroud)
在该代码中,我使用NavigationService将一些参数传递给另一个页面.我不能再使用NaigationService了,因为UWP不支持它.我已经尝试在我的UWP项目中使用它,但我认为它只支持传递一个参数CMIIW.
private void restaurant_tapped(object sender, TappedRoutedEventArgs e)
{
string types = "restaurant";
string title = "restaurant";
Frame.Navigate(typeof(placeResult), latLoc.Text, longLoc.Text, types, title);
}
Run Code Online (Sandbox Code Playgroud)
该代码给我一个错误,因为它需要5个参数,即+2重载.我的问题是如何以正确的方式在UWP项目中传递一些参数?
Rob*_*iel 47
您在Windows(Phone)8中传递的内容只是一个简单的内容string,其中包含了所有参数.您必须在OnNavigatedTo()目标页面的方法中解析它们.当然,您仍然可以执行此操作并将字符串传递给Frame.Navigate()方法.
但是因为UWP你可以将完整的对象传递给其他页面.那么为什么不创建一个包含所有参数的小类并传递一个实例呢?
你的课可能看起来像:
public class RestaurantParams
{
public string Name { get; set; }
public string Text { get; set; }
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后通过:
var parameters = new RestaurantParams();
parameters.Name = "Lorem ipsum";
parameters.Text = "Dolor sit amet.";
// ...
Frame.Navigate(typeof(PageTwo), parameters);
Run Code Online (Sandbox Code Playgroud)
在下一页上,您现在可以通过以下方式访问它们:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
var parameters = (RestaurantParams)e.Parameter;
// parameters.Name
// parameters.Text
// ...
}
Run Code Online (Sandbox Code Playgroud)
其中Parameter是检索参数的函数.
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
15426 次 |
| 最近记录: |