Один из способов сделать это - задействовать страницы, поддерживающие такой интерфейс, как:
public interface ICanClose
{
bool CanClose();
}
Реализация этого интерфейса на уровне страницы:
public partial class Page1 : Page, ICanClose
{
public Page1()
{
InitializeComponent();
}
public bool CanClose()
{
return false;
}
}
В окне навигации проверьте, имеет ли ребенок ICanClose:
private void NavigationWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
ICanClose canClose = this.Content as ICanClose;
if (canClose != null && !canClose.CanClose())
e.Cancel = true;
}