系统相关
首页 > 系统相关> > 如何从Windows Store应用程序中的SecondaryTile导航到特定页面?

如何从Windows Store应用程序中的SecondaryTile导航到特定页面?

作者:互联网

我目前正在使用C#开发Windows Store应用程序.在我的应用程序中,我正在使用“辅助平铺”选项使用以下代码将我的功能之一固定到“开始”屏幕.

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 Store应用程序中实现这一目标吗?

解决方法:

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

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

Documentation says that arguments is:

An app-defined string meaningful to the calling application. This
argument string is passed back to the app when the app is activated
from the secondary tile. It will be truncated after 2048 characters.
Can be set or retrieved through the Arguments property

因此,您可以传递一个字符串,该字符串标识当用户单击辅助磁贴时必须启动的页面,然后在激活该应用后在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
}

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

标签:windows-store-apps,windows-8,xaml,c
来源: https://codeday.me/bug/20191030/1971009.html