WPF 拦截 GoBack() 事件

WPF Intercept GoBack() event

我正在 .NET Core 3.1 中创建 WPF 应用程序。我用一个主 window 构建项目并使用不同页面之间的导航。 在主页面上我有一个标签,在 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() 事件 window?

您可以处理 ListProductsLoaded 事件,并在事件处理程序中执行您想要的任何逻辑:

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...
        }
    }
}