programing

인수를 기반으로 WPF를 시작하는 방법

magicmemo 2023. 4. 16. 14:51
반응형

인수를 기반으로 WPF를 시작하는 방법

저는 현재 파일 조작을 하는 애플리케이션을 개발하고 있는데 콘솔이나 UI를 통해 조작할 수 있도록 하고 싶습니다(WPF를 선택했습니다).

꼭 하고 싶은 말: (푸에도)

if ( Environment.GetCommandLineArgs().Length > 0 )
{
    //Do not Open WPF UI, Instead do manipulate based
    //on the arguments passed in
}
else
{
    //Open the WPF UI
}

WPF 창/어플리케이션을 프로그래밍 방식으로 기동하는 다음과 같은 몇 가지 다른 방법에 대해 읽은 적이 있습니다.

Application app = new Application ();
app.Run(new Window1());

하지만 콘솔 응용 프로그램에 연결하기만 하면 되는지 잘 모르겠습니다.

이것을 실현하는 방법에 관한 베스트 프랙티스나 추천을 가지고 있는 사람이 있습니까?주요 처리 기능은 제가 만든 도우미 클래스에 있습니다.따라서 기본적으로 전달된 인수에 따라 정적 시작 메서드(표준 콘솔응용 프로그램 생성과 동일) 또는 UI가 Helper 클래스에 액세스하도록 합니다.

Applicationclass "StartUp" 이벤트가 있습니다.이 이벤트를 사용할 수 있습니다.명령 프롬프트를 통해 제공하는 arg가 제공됩니다.다음으로 MSDN의 예를 나타냅니다.

App.xaml

<Application x:Class="WpfApplication99.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         Startup="App_Startup">
</Application>

App.xaml.cs

public partial class App : Application
{
    void App_Startup(object sender, StartupEventArgs e)
    {
        // Application is running
        // Process command line args
        bool startMinimized = false;
        for (int i = 0; i != e.Args.Length; ++i)
        {
            if (e.Args[i] == "/StartMinimized")
            {
                startMinimized = true;
            }
        }

        // Create main application window, starting minimized if specified
        MainWindow mainWindow = new MainWindow();
        if (startMinimized)
        {
            mainWindow.WindowState = WindowState.Minimized;
        }
        mainWindow.Show();
    }
}

이게 도움이 됐으면 좋겠어요.

명령줄 인수를 가져오려면 두 가지 옵션이 있습니다.
1) 인수를 읽고 싶은 경우OnStartup이것은, 의 글로벌한 액세스에 도움이 됩니다.args.

오버라이드OnStartupApp.xaml.cs그리고 이 사진을 보세요Args의 특성StartupEventArgs학급.

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        foreach (string arg in e.Args)
        {
            // TODO: whatever
        }
        base.OnStartup(e);
    }
}

2) 다른 쉬운 방법은 환경 객체에서 인수를 읽는 것입니다.

환경.Get Command Line Args();

Form / Page 등 어플리케이션 내 어디에서나 사용할 수 있습니다.

스타트업 이벤트는 보통 "App.xaml"에 등록되어 있고 수정하고 싶지 않을 수 있기 때문에 OnStartup 덮어쓰기를 선호합니다.또한 OnStartup 함수는 Startup 이벤트를 호출하기 전에 몇 가지 전처리를 수행할 수 있는 방법을 제공합니다.이것이 OnStartup을 덮어쓸 수 있는 이유입니다!

언급URL : https://stackoverflow.com/questions/11769113/how-to-start-wpf-based-on-arguments

반응형