Wpf Click Navigate

「Button&List」のクリックでナビゲートします。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. 新規プロジェクトから[WPF アプリ(.NET Framework)] を構築します。
    規定値で [プロジェクト名=WpfApp1][namespace=WpfAppl] になっています。
  2. Navigate(遷移)するページを作成します。
    メニューの[プロジェクト][新しい項目の追加]から[ページ(WPF)] を選んで3枚追加します。
    TopPage.xaml, Page1.xaml, Page2.xaml をプロジェクトのソリューションエクスプローラに追加して下さい。
  3. Page1.xaml には赤色の TextBox を、Page2.xaml には緑色の TextBox を貼り付けます。
    Page の作成は Frame Navigate を参照して下さい。
  4. TopPage.xaml に2個の Button を貼り付けてハンドラを呼び出します。
    google のページと私のページには Hyperlink を使います。
    <Page x:Class="WpfApp1.TopPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d" 
        d:DesignHeight="450" d:DesignWidth="800"
        Title="TopPage">
      <TextBlock Margin="10,78,0,0"
                 HorizontalAlignment="Left"
                 VerticalAlignment="Top"
                 TextWrapping="Wrap">
        <Button x:Name="button" Content="Button" Width="75"
            Click="NavigatePage1_Click"/>
        <LineBreak />
        <Button x:Name="button1" Content="Button" Width="75"
            Click="NavigatePage2_Click"/>
        <LineBreak />
        <Hyperlink NavigateUri="https://www.google.co.jp/">
            google のページに遷移します
        </Hyperlink>
        <Hyperlink NavigateUri="http://www.eonet.ne.jp/~maeda/index.html">
            私のトップページに遷移します
        </Hyperlink>
      </TextBlock>
    </Page>
    
  5. PageTop.xml.cs のソースコードです。
    NavigatePage1_Click と NavigatePage2_Click で書き方を変えてみました。
    namespace WpfApp1
    {   public partial class TopPage : Page
        {   public TopPage()
            {   InitializeComponent();  }
            private void NavigatePage1_Click(object sender, RoutedEventArgs e)
            {   NavigationService.Navigate(new Uri("Page1.xaml", UriKind.Relative));  }
            private void NavigatePage2_Click(object sender, RoutedEventArgs e)
            {   var nextPage = new Page2();
                NavigationService.Navigate(nextPage);
            }
        }
    }
    
  6. MainWindow.xaml を修正して NavigationWindow を使います。
    <NavigationWindow x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="500">
    </NavigationWindow>
    
  7. MainWindow.xaml.cs では NavigationWindow を継承して下さい。
    Navigate(new TopPage()) で TopPage を呼び出します。
    MainWindow からは PageTop の呼び出しだけで、ツールを貼り付けることは出来ません。
    namespace WpfApp1
    {   public partial class MainWindow : NavigationWindow
        {   public MainWindow()
            {   InitializeComponent();
                Navigate(new TopPage());
            }
        }
    }
    
  8. Hyperlink で Page1, Page2 を呼び出すことも出来ます。
        <Hyperlink NavigateUri="Page1.xaml">
            Page1 へ遷移します
        </Hyperlink>
    
    また Button のクリックで URL を呼び出すことも出来ます。
        private void NavigatePage_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new Uri("https://www.google.co.jp/", UriKind.Absolute));
        }
    
    今回のようなプロジェクトでは、Hyperlink か ButtonClick のどちらかに統一した方が解りやすいでしょう。

超初心者のプログラム入門(C# Frame Work)