3

我目前正在使用 C# 开发 Windows Store 应用程序。在我的应用程序中,我使用 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 应用商店应用中实现这一点吗?

4

1 回答 1

4

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

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

文档说参数是:

对调用应用程序有意义的应用程序定义的字符串。当从辅助磁贴激活应用程序时,此参数字符串将传递回应用程序。它将在 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.PreviousExecutionStateinOnLaunched方法。你的OnLaunched方法不能只是这样。

于 2013-05-29T13:52:17.863 回答