【发布时间】:2021-06-27 22:19:51
【问题描述】:
我正在 .NET Core 3.1 中创建一个 WPF 应用程序。我用一个主窗口构建项目,并使用不同页面之间的导航。 在主页中,我有一个标签,在 C# 文件中我使用以下代码:
public partial class Main : Window
{
private void ListProducts_Click(object sender, RoutedEventArgs e)
{
Frame.NavigationService.Navigate(new ListProducts(Frame));
}
}
从这个页面我去另一个页面做一些事情:
public partial class ListProducts : Page
{
private void Add_Click(object sender, RoutedEventArgs e)
{
frame.NavigationService.Navigate(new AddProduct(Frame));
}
}
然后我返回这段代码:
public partial class AddProduct : Page
{
private void Close_Click(object sender, RoutedEventArgs e)
{
frame.NavigationService.GoBack();
}
}
从一个页面到另一个页面注入框架。当我使用 GoBack() 时,我想捕捉并触发 ListProducts 页面中的一些事件。如何拦截父窗口的GoBack()事件?
【问题讨论】:
-
将关闭按钮移动到父窗口,您甚至可以将其显示在框架上方,单击时关闭当前页面。顺便说一句,学习 MVVM 和绑定可以为您打开 WPF 的强大功能。 NavigationWindow+Frame+Page 在 WPF 中不是一种流行的做法,因为它是由 Microsoft 以错误的方式设计的,包含不受欢迎的限制。
-
@MicheleBoscagin:
ListProducts不可能拦截发生在AddProduct中的事情。你的意思是你想在ListProducts被导航回时执行一些操作,还是你想根据一些逻辑阻止导航发生? -
@mm8 不,当 ListProduct 从 AddProduct 导航回来时,只需在 ListProduct 中执行一些操作
标签: c# wpf .net-core navigation