如何从Windows应用商店应用中的SecondaryTile导航到特定页面?

时间:2013-05-29 13:31:30

标签: c# xaml windows-8 windows-store-apps

我目前正在使用C#开发Windows应用商店应用。在我的应用程序中,我使用Secondary Tile选项使用以下代码将我的一个功能固定到“开始屏幕”。

if (SecondaryTile.Exists(TileId))
            {
                var secondaryTile = new SecondaryTile(TileId);
                await econdaryTile.RequestDeleteForSelectionAsync(GetElementRect((FrameworkElement)sender), Placement.Above);
            }
            else
            {
                var logo = new Uri("ms-appx:///Assets/A.png", UriKind.RelativeOrAbsolute);

                var secondaryTile = new SecondaryTile
                {
                    Logo = logo,
                    TileId = TileId,
                    ShortName = "AAAA",
                    Arguments = TileId + DateTime.Now.ToLocalTime(),
                    DisplayName = "AAAAAAA BBBBBBB",
                    TileOptions = TileOptions.ShowNameOnLogo,
                    ForegroundText = ForegroundText.Dark
                };

                await secondaryTile.RequestCreateForSelectionAsync(GetElementRect(sender as FrameworkElement), Placement.Above);
            }

因此它现在将SecondaryTile托管到“开始”屏幕。但是对于我的要求,只要用户从“开始”屏幕单击SecondaryTile,它就应该导航到页面“A”。我们可以在Windows应用商店应用中实现这一目标吗?

1 个答案:

答案 0 :(得分:4)

是的但你应该使用另一个SecondaryTile构造函数来传递一些参数和tile ID。您不需要使用其他构造函数,因为您只能使用Tile ID来决定应用程序在启动时必须访问的页面,但我认为最好使用参数来发送页面名称或标识。

public SecondaryTile(
  string tileId, 
  string shortName, 
  string displayName, 
  string arguments, 
  TileOptions tileOptions, 
  Uri logoReference
)

Documentation says that arguments is:

  

对调用应用程序有意义的应用程序定义字符串。这个   激活应用程序时,参数字符串将传递回应用程序   从二级瓷砖。它将在2048个字符后被截断。   可以通过Arguments属性设置或检索

因此,您可以传递一个字符串,用于标识用户点击辅助磁贴时必须启动的页面,然后在 App.xaml.cs OnLaunched方法中使用该字符串该应用已激活:

async protected override void OnLaunched(LaunchActivatedEventArgs args)
{
    var tile_id = args.TileId;
    var tile_arguments = args.Arguments;
    // Depending on tile_id and tile_arguments navigate to the page you want
}

请注意,您还应该了解args.PreviousExecutionState方法中的OnLaunched。您的OnLaunched方法不能只是这个。