如何将消息发送到框架控件中的页面?
问题描述:
我有一个主导航列(ListBox)和当前选定项目的详细视图的窗口。当我在列表框中选择一个项目时,细节视图将显示一组与所选项目相关的控件(可编辑的文本框等)。如何将消息发送到框架控件中的页面?
到目前为止,我已选择使用可通过更改Frame.Source来显示不同页面的框架。此外,我希望页面在首次单击时从选定的列表框项目加载信息,并在列表框的所选项目更改时将详细信息视图中显示的相同信息保存回同一项目。
由于网页和主窗口都在不同的XAML文件,他们本身无法看到对方。我会如何传递这样的信息?我正在考虑在概念上类似于JSON调用,您可以将一系列参数传递到另一个页面并接收响应。
由于下面的反应,我发现This guide about NavigationServices。此代码示例是尤为重要:
Customer selectedCustomer = (Customer)listBox.SelectedItem;
this.NavigationService.Navigate(new CustomerDetailsPage(selectedCustomer));
我需要什么做的是调用新页面的构造函数,我想作为参数传递的对象。由于该对象通过引用传递,因此对该对象所做的更改将自动反映到该对象所在应用程序的其他区域中。
答
我想如果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
等等
好了,我可以做一些像nextPageContent.DataContext = [MainWindow的DataContext]? – ford
是的,如果你尝试。 –