1

如何将参数传递到另一个页面并在 WPF 中读取?我在互联网上读到这可以使用以下 URL 来完成:

NavigationService n = NavigationService.GetNavigationService(this);
n.Navigate(new Uri("Test.xaml?param=true", UriKind.Relative));

但我无法读取Test.xaml页面中的参数值。

我无法从页面实例化一个新实例并通过构造函数传递它,因为在往返是使用页面路径导航之前我遇到了一个问题。

4

2 回答 2

3

读这个:

http://paulstovell.com/blog/wpf-navigation

虽然不是很明显,但您可以将查询字符串数据传递到页面,并从路径中提取它。例如,您的超链接可以在 URI 中传递一个值:

<TextBlock>
    <Hyperlink NavigateUri="Page2.xaml?Message=Hello">Go to page 2</Hyperlink>
</TextBlock>

页面加载后,可以通过 NavigationService.CurrentSource 提取参数,返回一个 Uri 对象。然后它可以检查 Uri 以分离这些值。但是,我强烈建议不要使用这种方法,除非在最可怕的情况下。

一个更好的方法是使用 NavigationService.Navigate 的重载,它接受一个对象作为参数。您可以自己初始化对象,例如:

Customer selectedCustomer = (Customer)listBox.SelectedItem;
this.NavigationService.Navigate(new CustomerDetailsPage(selectedCustomer));

这假定页面构造函数接收一个 Customer 对象作为参数。这允许您在页面之间传递更丰富的信息,而无需解析字符串。

于 2013-09-30T07:05:33.527 回答
0

您可以使用重载Navigate(object,object)将数据传递到另一个视图。

像这样称呼它

NavigationService n = NavigationService.GetNavigationService(this);
n.Navigate(new Uri("Test.xaml", UriKind.Relative), true);

在您的视图中,您可以提取 Navigation 传递的参数。

void NavigationService_LoadCompleted(object sender, NavigationEventArgs e)
{
    bool test = (bool) e.ExtraData;
}
于 2013-09-30T07:05:45.983 回答