带有初始参数的Windows 8应用商店应用程序调用

本文关键字:应用 应用程序 调用 Windows 参数 | 更新日期: 2023-09-27 18:20:39

在启动Win8 Store应用程序时,我想传递参数。

我看到了以下在App类中调用的方法。看起来它正在传递参数,所以我的问题是如何将参数传递给"OnLaunched"?本质上,当我直接从Win8菜单运行应用程序时

    protected override void OnLaunched(LaunchActivatedEventArgs e)
    {
        if (rootFrame.Content == null)
        {
            // When the navigation stack isn't restored navigate to the first page,
            // configuring the new page by passing required information as a navigation
            // parameter
            rootFrame.Navigate(typeof(MainPage), e.Arguments);
        }
    }

带有初始参数的Windows 8应用商店应用程序调用

这些参数可以通过辅助tile传入,辅助tile可用于在应用程序启动期间将应用程序启动到指定页面。

我通常使用ViewManager来管理基于这些参数显示的视图。

App.cs

protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
    ApplicationData.Current.LocalSettings.Values[Constants.APP_PARAMETERS] = args.Arguments;
    // Do not repeat app initialization when already running, just ensure that
    // the window is active
    if (args.PreviousExecutionState == ApplicationExecutionState.Running)
    {
        Window.Current.Activate();
        await ViewManager.Instance.LaunchView();
        return;
    }

ViewManager:

public class ViewManager
{
    #region Singleton
    private ViewManager()
    {
    }
    static ViewManager _viewManager = null;
    public static ViewManager Instance
    {
        get
        {
            if (_viewManager == null)
            {
                _viewManager = new ViewManager();
            }
            return _viewManager;
        }
    }
    #endregion
    public async Task LaunchView()
    {
        bool displaySubheader = false;
        var displayBackbutton = false;
        var arguments = ApplicationData.Current.LocalSettings.Values[Constants.APP_PARAMETERS] as string;
        var argumentsExist = !string.IsNullOrEmpty(arguments);
        if (!argumentsExist)
        {
            await UIServices.Instance.Load(typeof(HomePage), null, displaySubheader, displayBackbutton);
        }
        else
        {
            displaySubheader = true;
            displayBackbutton = false;
            await UIServices.Instance.Load(typeof(GroupPage), arguments, displaySubheader, displayBackbutton);
            var groupId = new Guid(arguments);
            await ReadPost(groupId);
        }
    }