본문 바로가기
programming/UWP

UWP 실행시 윈도우 창 크기 설정 코드와 위치

by 개코 - 개발과 코딩 2023. 4. 13.

UWP 앱 실행시 윈도우 크기를 설정할 필요가 있다. UWP 앱의 화면 크기는 ApplicationView 개체를 사용하여 너비와 높이를 지정하면 되고 변경하는 코드의 위치는 App.xaml.cs 에 작성해 주면 된다. 이렇게 작성할 경우 UWP 에서 권장하는 최소 창크기를 무시하고 더 작게 만들 수 있다.

UWP 실행시 윈도우 창 크기 설정

UWP 를 다루면서 WPF 와 비슷한 점이 있고 윈폼 ( WinForm ) 보다 불편한 점이 있는 것을 알게 된다. 이것은 UWP 의 유니버설한 특성 때문인 것 같은데 같은 서로 다른 기기에서 모든 윈도우즈에 대한 호환성 때문인 것 같다.

그 중 하나가 있다면 실행시 화면 크기를 설정하는 부분일 것이다.

윈폼의 경우 너비와 높이를 지정하면 되지만 UWP 의 경우 그놈의 호환성이 발목을 잡는다.

스택오버플로우나 다른 외국 블로그의 글을 봐도 화면을 설정하는 방법 등은 비슷비슷하지만 이것이 정상적으로 동작하지 않는다.

그들도 잘 모르는 모양이고, 단지 코드의 위치만 app.xaml.cs 위치로 변경해 주면 된다.

uwp 화면 크기 설정 코드

uwp 로 만든 앱이 최초로 실행할 때 화면의 크기를 설정할 일이 있을 것이다.

당연히 앱의 너비와 높이를 설정해 주면 되는데 uwp 는 ApplicationView 객체를 사용하여 앱의 크기를 설정할 수 있다.

뭐가 이리 복잡한지.

아래는 ApplicationView 객체를 사용하여 uwp 앱 실행시 창의 크기를 설정하는 코드이다.

아래의 코드는 어디를 검색해도 다 비슷한 코드이며 틀린 점은 없다.

다만 아래의 uwp 화면 크기 설정 코드를 어디에 작성하느냐에 대한 얘기가 없다.

// 초기 창 크기 설정
double vWidth = 500, vHeight = 300; // 너비, 높이
ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size { Width = vWidth, Height = vHeight });
ApplicationView.PreferredLaunchViewSize = new Size(vWidth, vHeight);
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;

MSDN 커뮤니티의 내용을 찾아보았을 때 위의 화면 크기 설정 코드는 App.xaml.cs 코드에 작성하면 된다는 것을 찾을 수 있었고, 적용시 정상적으로 동작되는 것을 확인했다.

위의 코드는 App.xaml.cs 파일의 OnLaunched 메서드 내에 작성하면 되며, Window.Current.Activate() 메서드 실행 전에 작성하면 된다.

전체 코드

UWP 앱 실행시 화면 크기를 설정하기 위한 전체 코드를 작성해 본다.

화면을 설정하는 코드는 위에 언급한 내용을 참고하면 된다.

작성할 위치는 App.xaml.cs 의 OnLaunched 함수 내에 있는 Window.Current.Activate() 메서드 실행 전에 작성하면 된다.

아래의 코드를 보자.

/// <summary>
/// 최종 사용자가 애플리케이션을 정상적으로 시작할 때 호출됩니다. 다른 진입점은
/// 특정 파일을 여는 등 애플리케이션을 시작할 때
/// </summary>
/// <param name="e">시작 요청 및 프로세스에 대한 정보입니다.</param>
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
	. . . . . .

	if (e.PrelaunchActivated == false)
	{
		if (rootFrame.Content == null)
		{
			// 탐색 스택이 복원되지 않으면 첫 번째 페이지로 돌아가고
			// 필요한 정보를 탐색 매개 변수로 전달하여 새 페이지를
			// 구성합니다.
			rootFrame.Navigate(typeof(MainPage), e.Arguments);
		}

		// 초기 창 크기 설정
		double vWidth = 500, vHeight = 300; // 너비, 높이
		ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size { Width = vWidth, Height = vHeight });
		ApplicationView.PreferredLaunchViewSize = new Size(vWidth, vHeight);
		ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;

		// 현재 창이 활성 창인지 확인
		Window.Current.Activate();
	}
}

App.xaml.cs 파일의 OnLaunched() 함수는 UWP 프로젝트 생성시 자동으로 생성되는 부분이다.

Window.Current.Activate() 메서드에서 현재 창이 활성되었는지 판단하고 화면에 나타나게 하려고 하는 부분이다.
이 메서드가 호출되기 전에 위에서 언급한 UWP 화면 크기 설정 코드를 작성하면 된다.

아래는 실행결과이다.

앱의 크기가 너비 500px 높이 300px 크기의 UWP 앱이 실행된 것을 볼 수 있다.

참고로 Window.Current.Activate() 메서드에 위의 화면 변경 코드를 적용하면 더 작은 크기의 UWP 앱 형태를 만들 수 있다.

반응형

댓글