카테고리 없음

12주차 TwoWindows , 페이지 내비게이션

이승형 2023. 6. 10. 23:16

이번주차를 시작하기 전에는 미리 알아두어야 할 것이 있다.

 

ModalModaless 차이점을 알아야 한다

- Modal 창이 열리면 기존에 있던 창은 사용하지 못한다.

Modaless창이 열리면 기존에 있던 창이 사용가능하다는 

차이점을 알아두어야 한다.

 

디자인 코드 

<Window x:Class="TwoWindows.MainWindow“
   …
   Title="Two Windows" Height="250" Width="400">
  <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" 
	Orientation="Horizontal">
    <Button x:Name="btnShow" Content="Show()-Modaless" 
	Height="40" Width="120" Click="btnShow_Click"/>
    <TextBlock Width="30"/>
    <Button x:Name="btnShowDialog" Content="ShowDialog()-Modal" 
	Height="40" Width="120" Click="btnShowDialog_Click"/>
  </StackPanel>
</Window>

 

CS코드 

    private void btnShow_Click(object sender, RoutedEventArgs e)
    {
      Window1 w = new Window1();
      w.Show();		// 모달리스
    }

    private void btnShowDialog_Click(object sender, RoutedEventArgs e)
    {
      Window1 w = new Window1();	
      w.ShowDialog();		// 모달
    }

 

결과 창

 

 

첫번째 버튼을 누르면 기존 화면이 사용가능하지만 

두번재 버튼은 기존 화면이 사용 불가능해진다. 

 

 

 

페이지 네비게이션 

 

 

 

본 페이지는 Frame Source로 지명 해준다 .

 

<Window x:Class="Pages.MainWindow"
        	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	...
	Title="Login" Height="500" Width="500">
  <Grid>
    <Frame Source="/Page1.xaml"/>
  </Grid>
</Window>

 

 

Page 1 디자인 코드 및 CS 코드 

<Page x:Class="Pages.Page1"
      d:DesignHeight="300" d:DesignWidth="400"
      Title="Page1">
  <Grid>
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
      <Button x:Name="btnInfo" Content="Information" Margin="20 0 10 0" 
	Height="50" Width="88" Click="btnInfo_Click"/>
      <Button x:Name="btnLogin" Content="ID/Password" Margin="10 0 10 0" 
	Height="50" Width="88" Click="btnLogin_Click"/>
      <Button x:Name="btnSignUp" Content="SignUp" Margin="10 0 20 0" 
	Height="50" Width="88" Click="btnSignUp_Click"/>
    </StackPanel>
  </Grid>
</Page>
private void btnInfo_Click(object sender, RoutedEventArgs e)
{
    NavigationService.Navigate(new Uri("/Email.xaml", UriKind.Relative));
}

private void btnLogin_Click(object sender, RoutedEventArgs e)
{
    NavigationService.Navigate(new Uri("/Login.xaml", UriKind.Relative));
}

private void btnSignUp_Click(object sender, RoutedEventArgs e)
{
  NavigationService.Navigate(new Uri("/SignUp.xaml", UriKind.Relative));
}

 

페이지 1에는 information 과 Login , Sign up 버튼 세개를 디자인 해놓는다. 

또한 CS코드로

 

  NavigationService.Navigate(new Uri("/Email.xaml", UriKind.Relative));

 

(이동할 페이지).xaml 로 하여 페이지 이동을 만들어 준다.

 

Information 디자인 코드 

<Page x:Class="Pages.Page2“
      ...
      d:DesignHeight="300" d:DesignWidth="400"
      Title="Page2">
  <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">

    <TextBlock HorizontalAlignment="Center" FontSize="20" FontWeight="Bold" 
	Margin="30">Information</TextBlock>

    <StackPanel Orientation="Horizontal" Margin="10">
      <TextBlock Width="50" TextAlignment="Right">Email:</TextBlock>
      <TextBlock Width="30"/>
      <TextBox Width="150"></TextBox>
    </StackPanel>

    <StackPanel Orientation="Horizontal" Margin="10">
      <TextBlock Width="50" TextAlignment="Right">Name:</TextBlock>
      <TextBlock Width="30"/>
      <TextBox Width="150"></TextBox>
    </StackPanel>
  </StackPanel>
</Page>

 

Login 디자인코드 

<Page x:Class="Pages.Page3"
      d:DesignHeight="300" d:DesignWidth="400“ Title="Login">
  <Grid>
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
      <TextBlock HorizontalAlignment="Center" FontSize="20" 
	FontWeight="Bold" Margin="30">Login</TextBlock>
      <StackPanel Orientation="Horizontal" Margin="10">
        <TextBlock Width="50" TextAlignment="Right">Id:</TextBlock>
        <TextBlock Width="30"/>
        <TextBox Width="150"></TextBox>
      </StackPanel>
      <StackPanel Orientation="Horizontal" Margin="10">
        <TextBlock Width="50" TextAlignment="Right">Password:</TextBlock>
        <TextBlock Width="30"/>
        <PasswordBox Width="150"></PasswordBox>
      </StackPanel>
      <StackPanel Orientation="Horizontal" Margin="10">
        <TextBlock Width="50" TextAlignment="Right"></TextBlock>
        <TextBlock Width="30"/>
        <Button Width="150" Height="24">Login</Button>
      </StackPanel>
    </StackPanel>
  </Grid>
</Page>

 

 

 

Sign up 디자인 코드 

 

<Page x:Class="Pages.SignUp“
      ...
      d:DesignHeight="300" d:DesignWidth="400"
      Title="SignUp">

  <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
    <TextBlock HorizontalAlignment="Center" FontSize="20" FontWeight="Bold" 
	Margin="20">SignUp</TextBlock>
    <StackPanel Orientation="Horizontal" Margin="10">
      <TextBlock Width="60" TextAlignment="Right">Id:</TextBlock>
      <TextBlock Width="20"/>
      <TextBox Width="150"></TextBox>
    </StackPanel>
    <StackPanel Orientation="Horizontal" Margin="10">
      <TextBlock Width="60" TextAlignment="Right">Password:</TextBlock>
      <TextBlock Width="20"/>
      <TextBox Width="150"></TextBox>
    </StackPanel>
    <StackPanel Orientation="Horizontal" Margin="10" ...></StackPanel>
    <StackPanel Orientation="Horizontal" Margin="10" ...></StackPanel>
    <StackPanel Orientation="Horizontal" Margin="10" ...></StackPanel>
    <StackPanel Orientation="Horizontal" Margin="10">
      <TextBlock Width="60" TextAlignment="Right"></TextBlock>
      <TextBlock Width="20"/>
      <Button Width="150" Height="24">SignUp</Button>
    </StackPanel>
  </StackPanel>
</Page>

결과 창