C# WPF Intercept GoBack()事件
我正在.NETCore3.1中创建一个WPF应用程序。我用一个主窗口构建了这个项目,并使用不同页面之间的导航。 在主页中我有一个标签,在C文件中我使用以下代码:C# WPF Intercept GoBack()事件,c#,wpf,.net-core,navigation,C#,Wpf,.net Core,Navigation,我正在.NETCore3.1中创建一个WPF应用程序。我用一个主窗口构建了这个项目,并使用不同页面之间的导航。 在主页中我有一个标签,在C文件中我使用以下代码: public partial class Main : Window { private void ListProducts_Click(object sender, RoutedEventArgs e) { Frame.NavigationService.Navigate(new ListProduct
public partial class Main : Window
{
private void ListProducts_Click(object sender, RoutedEventArgs e)
{
Frame.NavigationService.Navigate(new ListProducts(Frame));
}
}
public partial class AddProduct : Page
{
private void Close_Click(object sender, RoutedEventArgs e)
{
frame.NavigationService.GoBack();
}
}
从这一页我转到另一页做一些事情:
public partial class ListProducts : Page
{
private void Add_Click(object sender, RoutedEventArgs e)
{
frame.NavigationService.Navigate(new AddProduct(Frame));
}
}
然后我用下面的代码返回:
public partial class Main : Window
{
private void ListProducts_Click(object sender, RoutedEventArgs e)
{
Frame.NavigationService.Navigate(new ListProducts(Frame));
}
}
public partial class AddProduct : Page
{
private void Close_Click(object sender, RoutedEventArgs e)
{
frame.NavigationService.GoBack();
}
}
将框架从一页注入到另一页。使用GoBack()时,我希望捕获并触发ListProducts页面中的一些事件。如何在父窗口中截获GoBack()事件?您可以处理
列表产品的加载的事件,并在事件处理程序中执行所需的任何逻辑:
public partial class ListProducts : Page
{
private readonly Frame _frame;
public ListProducts(Frame frame)
{
InitializeComponent();
Loaded += OnLoaded;
_frame = frame;
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
if (_frame.CanGoForward)
{
//handle navigate back logic here...
}
}
}
将“关闭”按钮移动到父窗口,您甚至可以将其显示在框架上方,单击关闭当前页面。顺便说一句,学习MVVM和绑定将为您打开WPF的威力。NavigationWindow+Frame+Page在WPF中不是一种流行的做法,因为它是由Microsoft以错误的方式设计的,包含不需要的限制。@MicheleBoscagin:ListProducts
不可能截获在AddProduct
中发生的内容。您的意思是,当它被导航回时,您想在ListProducts
中执行一些操作,还是想根据某些逻辑阻止导航的发生?@mm8否,只需在ListProduct从AddProduct导航回时,在ListProduct中执行一些操作即可