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?
您可以处理 ListProducts
的 Loaded
事件,并在事件处理程序中执行您想要的任何逻辑:
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...
}
}
}
我正在 .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?
您可以处理 ListProducts
的 Loaded
事件,并在事件处理程序中执行您想要的任何逻辑:
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...
}
}
}