문제

WPF 응용 프로그램의 경우 Window 위치, 창 상태 및 환영 대화 상자를 표시할지 여부와 같은 여러 사용자 설정을 저장하고 있습니다. 문제는 모든 것이로드되는 동안 창문이로드 될 때 많은 깜박임과 깜박임이 보이고 설정에서 읽은 후 창문이 극대화되면 더 깜박 거리는 것을 보았습니다.

이미 내장 WPF PNG 스플래시 화면 기능을 사용하고 있지만 모든 것이 완전히로드 될 때까지 모든 창의 렌더링을 완전히 숨길 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

application.xaml 편집, startupuri를 제거하고 대신 시작 이벤트 핸들러를 설정하십시오. Application.xaml.cs에서 시작 이벤트 핸들러를 편집하여 스플래시 스크린을 표시하고 리소스를로드하고 모든 것을 만들고 기본 창을 만들고 표시합니다.

<Application
    ...
    StartUp="OnStartUp"
    />

그리고:

private void OnStartUp(Object sender, StartupEventArgs e)
{
    var settings = LoadSettingsFrom... // Call your implementation of load user settings

    // Example only, in real app do this if's section on a different thread
    if (settings.doShowSplashScreen)
    {
        var splashScreen = new SplashScreen();
        splashScreen.Show();
    }

    // Load and create stuff (resources, databases, main classes, ...)

    var mainWindow = new mainWindow();
    mainWindow.ApplySettings(settings); // Call your implementation of apply settings

    if (doShowSplashScreen)
    {
        // send close signal to splash screen's thread
    }

    mainWindow.Show(); // Show the main window
}

다른 팁

이 함수 내부에서 속성을 변경하면 기능, 시작 및 엔디니트 기능이 있습니다.

BeginInit();
...
... // Do your code Initialization here...
...
EndInit();

그러면 endinit ()가 호출 될 때까지 창이 렌더링되지 않으면 깜박이지 않습니다.

Windows Windows State를 최소화하도록 설정 한 다음 Contentrendered 이벤트를 처리하고 Windows State를 정상 또는 최대로 설정할 수 있습니다.

이 로딩은 언제 발생합니까? 메인에서 실행 된 코드 Window창이 표시되기 전에 생성자의 생성자가 실행되어야합니다. 필요한 리소스를로드하면 깜박 거리는 것이 보이지 않아야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top