在 XAML 页面之间传递参数是有效应用程序设计的一个基本方面。无论您是在 Windows Phone、Silverlight、WPF 还是 Windows 8 应用程序中浏览页面,了解传递数据的适当方法都将增强应用程序的功能和用户体验。
对于简单的数据传输,可以使用查询字符串。通过此方法传递的数据必须转换为字符串并进行 URL 编码。
导航页面:
page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative));
目标页面:
string parameter = string.Empty; if (NavigationContext.QueryString.TryGetValue("parameter", out parameter)) { this.label.Text = parameter; }
NavigationEventArgs 可以访问在导航期间通过方法调用传递的参数。
导航页面:
page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative)); // and ... protected override void OnNavigatedFrom(NavigationEventArgs e) { Page destinationPage = e.Content as Page; if (destinationPage != null) { destinationPage.PublicProperty = "String or object.."; } }
目标页面:
// Use the value of "PublicProperty"..
手动导航允许通过构造函数传递自定义参数。
导航页面:
page.NavigationService.Navigate(new Page("passing a string to the constructor"));
目标页面:
public Page(string value) { // Use the value in the constructor... }
主要区别在于应用程序生命周期。手动创建的页面会保留在内存中,而通过 Uri 导航的页面则不会。
方法 1 和 2 可用于传递复杂对象,或者也可以使用自定义属性添加到Application类或数据可以存储在Application.Current.Properties中。
以上是如何在XAML页面之间高效传值?的详细内容。更多信息请关注PHP中文网其他相关文章!