具有初始参数参数的Windows 8 Store App调用

时间:2014-09-04 21:40:40

标签: c# xaml windows-store-apps windows-8.1 onload-event

在启动Win8 Store App时,我想传递参数参数。

我正在查看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);
        }
    }

1 个答案:

答案 0 :(得分:0)

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

我通常使用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);
        }
    }