WPF Resize 질문..

안녕하세요.

WPF 초보 개발자입니다 :slight_smile:

먼저 국내 닷넷 커뮤니티 사이트의 부재로 소통할 곳이 부족한데…

이런 소중한 곳 마련해주신 분들께 감사드립니다 ^^.

답변 해주시는 모든 분께 미리 감사의 인사를 드리면서… 질문을 드려보면…

Winform 개발시에… Form Resize로 인해… UI 트래픽이 증가하는 경우

WM_ENTERSIZEMOVE 이벤트에 SuspendLayout

WM_EXITSIZEMOVE 이벤트에 ResumeLayout

이벤트를 할당하여, 리사이즈 크기가 확정 되기 전까지… UI 작업을 중단 시켰었는데요…

WPF에는 저런 Layout 관리 할 수 있는 기능이 없는 것 같습니다…

이런 식으로 시도를 해봤는데… Enter 이벤트 진입 후 Window 리사이즈가 아주 쾌적해지면서… 잘 작동하는데…

DispacherProcessingDisabled 오브젝트를 파괴시켜도… 중단 된 UI가 복귀 되지 않더군요…

image

크롬 브라우져나… 요즘 다른 앱들처럼… Resize를 쾌적하게 할 수 있는 방법이 없을까요 ^^

좋은 조언 부탁드립니다. 감사합니다.

2개의 좋아요

DispacherProcessingDisabled() 이후 메시지 처리가 되지 않아야 하므로 아마 HookProc에서는 사용이 불가능 한 것으로 알고 있습니다.

여러가지 솔루션이 있겠지만 그 중에서 쉽게 접근할 수 있는 방법으로

윈도우 사이즈에 따라 사이즈가 변경되는 Contentcontent라 가정 하면 다음 처럼 구현할 수 있을 것 같습니다.

private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    const int WM_ENTERSIZEMOVE = 0x0231;
    const int WM_EXITSIZEMOVE = 0x0232;

    if (msg is WM_ENTERSIZEMOVE)
    {
        content.Width = content.ActualWidth;
        content.Height = content.ActualHeight;
        Debug.WriteLine("ENTER!");
    }
    else if (msg is WM_EXITSIZEMOVE)
    {
        content.Width = double.NaN;
        content.Height = double.NaN;

        Debug.WriteLine("EXIT!");
    }

    return IntPtr.Zero;
}

| 사이즈 조정 시

| 사이즈 조정 완료 시

4개의 좋아요

좋은 아이디어… 감사합니다…

테스트 한번 해보겠습니다 +.+

2개의 좋아요