我目前正在使用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应用商店应用中实现这一目标吗?
答案 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
方法不能只是这个。