C#/WinUI3

[WinUI3] NoResize, 생성 시 창의 크기

말하는 닭 2023. 2. 5. 01:23

WinUI3를 하면서 제일 건들고 싶었던 부분이다. (하나 더 있는데, 그건 WindowStyle. 나중에 얘도 어떻게 건들어야겠다)

얘는 wpf처럼 그냥 ResizeMode=ResizeMode.NoResize를 할 수 없고,
window에도 Height=~~, Width=~~도 할 수 없다.

 

불-편

아니 이게 왜 안되냐고요 솔직히 디자이너 없는 것도 엄청 불편하다고요

 

ApplicationView.PreferredLaunchViewSize = new Size(600, 600);  
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;

찾아보니 인터넷에서는 위의 코드를 작성해보라는데.. 이건 작동하지 않는다. 

uwp로 찬아봐서 그런지 uwp에서만 작동하는 듯..

 

//MainWindow.xaml.cs

public MainWindow() {
    this.InitializeComponent(); 
    
    GetAppWindowAndPresenter();

    _presenter.IsResizable = false;
    _appWindow.Resize(new Windows.Graphics.SizeInt32(600, 600));
}

private AppWindow _appWindow;
private OverlappedPresenter _presenter;

public void GetAppWindowAndPresenter() {
    var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
    WindowId myWndId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(hWnd);
    _appWindow = AppWindow.GetFromWindowId(myWndId);
    _presenter = _appWindow.Presenter as OverlappedPresenter;
}

(이번에도)인터넷 검색 결과, 해답을 얻을 수 있었다.

 

600, 600의 값을 넣어주었으므로 아래와 같은 정사각형의 뽀짝한 창을 얻을 수 있다.

그리고 창의 테두리에 가져다대도 변경 가능을 알리는 수직선(?)도 나오지 않는다

 

 

그리고, 오늘의 코드 출처:

https://github.com/microsoft/WindowsAppSDK/discussions/1694

 

How to disable window resize after the release of WinUI 3 1.0 Preview 3? · Discussion #1694 · microsoft/WindowsAppSDK

After upgrading my project to Preview 3, I can see that AppWindowConfiguration was removed, so how should I disable window resizing now? Do I have to go back to the old DllImport methods again?

github.com