Вы можете использовать тот факт, что нажатие кнопки является перенаправленным событием для обработки его в родительском фрейме.
<Frame Name="ParentFrame"
Button.Click="ParentFrame_Click"
>
</Frame>
код
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ParentFrame.Navigate(new Page1());
}
private void ParentFrame_Click(object sender, RoutedEventArgs e)
{
Button btn = e.OriginalSource as Button;
if(btn == null || btn.Tag == null)
{
return;
}
Page page = (Page)Activator.CreateInstance((Type)btn.Tag);
ParentFrame.Navigate(page);
}
}
Кнопка на странице 1:
<Button Width="100" Height="30"
Content="Go Page 2"
Tag="{x:Type local:Page2}"
/>
Page2:
<Button Width="100" Height="30"
Content="Go Page 1"
Tag="{x:Type local:Page1}"
/>
Тем не менее. Это было бы неприемлемо для коммерческого приложения во всех командах, с которыми я работал. Гораздо более привычно использовать MVVM и viewmodel для первой навигации с пользовательскими контролями, представленными contentcontrols.