如何在帧控件中向页面发送消息?

时间:2011-10-06 20:46:48

标签: .net wpf

我有一个带有主导航列(ListBox)的窗口和当前所选项目的详细视图。当我在ListBox中选择一个项目时,详细信息视图将显示一组与所选项目相关的控件(可编辑的文本字段等)。

到目前为止,我选择使用可以通过更改 Frame.Source 来显示不同页面的Frame。此外,我希望页面在首次单击时从所选列表框项加载信息,并在列表框的所选项更改时将详细视图中显示的相同信息保存回同一项。

由于Pages和MainWindow位于不同的XAML文件中,因此它们本身不能相互看到。我怎么会传递这样的信息?我在想一些概念上类似于JSON调用的东西,你可以将一系列参数传递给另一个页面并接收响应。

感谢下面的回复,我找到了This guide about NavigationServices。这段代码示例特别相关:

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

我需要做的是用我想要作为参数传递的对象调用新页面的构造函数。由于对象是通过引用传递的,因此对该对象所做的更改将自动反映在该对象所在的应用程序的其他区域中。

1 个答案:

答案 0 :(得分:2)

我认为如果Page1主持框架说MyFrame导航到Page2,那么导致NavigationService.Navigated事件从框架....

     MyFrame.NavigationService.Navigated +=
         (sender, e) =>
            {
                  var nextPageContent = MyFrame.NavigationService.Content;
                  //// this is the root of the content of Page2.
            }

nextPageContent可以提供自己的DataContext等...