今回はマークアップを使わずにビハインドコードでナビゲーションを実装します。
App.xaml
<Application x:Class="HelloWorld.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> </Application>
App.xaml.cs
using System.Windows; namespace HelloWorld { public partial class App : Application { public App() { new MainWindow().Show(); } } }
MainWindow.xaml
なし
MainWindow.cs
using System.Windows.Navigation; namespace HelloWorld { public partial class MainWindow : NavigationWindow { public MainWindow() { Navigate(new Page1()); } } }
Page1.cs
using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Navigation; namespace HelloWorld { public partial class Page1 : Page { public Page1() { TextBlock block = new TextBlock(); Hyperlink link = new Hyperlink(); link.Inlines.Add("ページ2に移動"); link.Click += (s, e) => { NavigationService.Navigate(new Page2()); }; block.Inlines.Add(link); this.Content = block; this.WindowTitle = "トップページ"; } } }
Page2.cs
using System.Windows.Controls; namespace HelloWorld { public partial class Page2 : Page { public Page2() { TextBlock block = new TextBlock(); block.Text = "ページ2"; this.Content = block; this.WindowTitle = "ページ2"; } } }
検証
項目 | 結果 |
---|---|
リンクをクリックするとページ2に遷移する。 | OK |
ページ2に遷移すると戻るボタンが有効になる。 | OK |
戻るボタンをクリックするとページ1に遷移する。 | OK |
ページ1に遷移すると進むボタンが有効になる。 | OK |
進むボタンをクリックするとページ2に遷移する。 | OK |