Visual Studio/WPF > 창 > 다른 창 열기

운영 환경
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

C++ Builder에서 자주 사용하는 「2개의 폼이 있어, 한쪽의 폼으로부터 다른 쪽의 폼을 열기」라고 하는 것을 VS/WPF에서는 어떻게 할까.
그것을 하고 있는 것이 아래의 비디오.

youtube 동영상: Open new window from another window in WPF - Part - 10

절차


  • 솔루션 탐색기에서 창 추가
  • 오른쪽 클릭
  • 추가(D)
  • 창(I)
  • 창(WPF), 선택
  • 이름(예): Window2.xaml


  • 원래 윈도우(MainWindow) 코드 > Button 누르기 이벤트
  • Window2의 인스턴스를 생성
  • Show() 실행
  • this.Close()
  • MainWindow를 닫고 싶은 경우



  • 코드



    MainWindow



    MainWindow.xaml
    <Window x:Class="_170430_t0655_openWindow.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:_170430_t0655_openWindow"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <StackPanel>
                <TextBlock Text="1st"/>
                <Button x:Name="B_open" Content="Open"  Click="B_open_Click"/>
            </StackPanel>
        </Grid>
    </Window>
    

    MainWindow.xaml.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace _170430_t0655_openWindow
    {
        /// <summary>
        /// MainWindow.xaml の相互作用ロジック
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void B_open_Click(object sender, RoutedEventArgs e)
            {
                Window2 awin2 = new Window2();
                awin2.Show();
                this.Close();
            }
        }
    }
    

    Window2



    Window2.xaml
    <Window x:Class="_170430_t0655_openWindow.Window2"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:_170430_t0655_openWindow"
            mc:Ignorable="d"
            Title="Window2" Height="300" Width="300">
        <Grid>
            <TextBlock Text="2nd"/>
        </Grid>
    </Window>
    

    실행 예



    MainWindow


    MainWindow의 버튼을 누르면, Window2(아래와 같이)가 열린다. MainWindow는 닫는다.


    C++ Builder XE4와의 차이


  • 앱 런타임에 양식 자동 생성은 어떻게 합니까?
  • 지금은 어떻게 할지 알 수 없습니다

  • Window2에 관한 include를 하지 않고도, Window2의 인스턴스를 생성할 수 있다
  • C#에 의한 차이일지도

  • 좋은 웹페이지 즐겨찾기