3

現在、C# を使用して Windows ストア アプリケーションを開発しています。私のアプリケーションでは、セカンダリ タイル オプションを使用して、次のコードを使用して機能の 1 つをスタート画面に固定しています。

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 とともにいくつかの引数を渡すには、別のコンストラクターを使用する必要があります。タイル ID のみを使用して起動時にアプリが移動する必要があるページを決定できるため、別のコンストラクターを使用する必要はありませんが、引数を使用してページ名または 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 に答える