Anheften von sekundären Kacheln an die Taskleiste
Hinweis
Live-Kacheln sind ein Windows 10-Feature, das in späteren Versionen von Windows nicht unterstützt wird. Für neue Apps wird empfohlen, die aktuellen Anleitungen für App-Symbole zu befolgen.
Genau wie das Anheften sekundärer Kacheln an "Start" können Sie sekundäre Kacheln an die Taskleiste anheften, sodass Ihre Benutzer schnell auf Inhalte in Ihrer App zugreifen können.
Wichtig
API für eingeschränkten Zugriff: Diese API ist ein Feature für eingeschränkten Zugriff. Um diese API zu verwenden, wenden Sie sich bitte an taskbarsecondarytile@microsoft.com.
Erfordert das Update vom Oktober 2018: Sie müssen sdk 17763 als Ziel verwenden und Build 17763 oder höher ausführen, um an die Taskleiste anzuheften.
Leitfaden
Eine sekundäre Kachel bietet benutzern eine konsistente und effiziente Möglichkeit, direkt auf bestimmte Bereiche innerhalb einer App zuzugreifen. Obwohl ein Benutzer auswählt, ob eine sekundäre Kachel an die Taskleiste angeheftet werden soll, werden die anheftbaren Bereiche in einer App vom Entwickler bestimmt. Weitere Anleitungen finden Sie in den Richtlinien für sekundäre Kacheln.
1. Ermitteln, ob API vorhanden ist und eingeschränkten Zugriff entsperren
Ältere Geräte verfügen nicht über die Anheftungs-APIs der Taskleiste (wenn Sie auf ältere Versionen von Windows 10 abzielen). Daher sollten Sie auf diesen Geräten keine Pinschaltfläche anzeigen, die nicht anheften kann.
Darüber hinaus ist dieses Feature unter eingeschränktem Zugriff gesperrt. Wenden Sie sich an Microsoft, um Zugriff zu erhalten. API-Aufrufe an TaskbarManager.RequestPinSecondaryTileAsync, TaskbarManager.IsSecondaryTilePinnedAsync und TaskbarManager.TryUnpinSecondaryTileAsync schlagen mit einer Ausnahme für "Zugriff verweigert" fehl. Apps dürfen diese API nicht ohne Berechtigung verwenden, und die API-Definition kann sich jederzeit ändern.
Verwenden Sie die ApiInformation.IsMethodPresent-Methode , um zu ermitteln, ob die APIs vorhanden sind. Und verwenden Sie dann die LimitedAccessFeatures-API , um die API zu entsperren.
if (ApiInformation.IsMethodPresent("Windows.UI.Shell.TaskbarManager", "RequestPinSecondaryTileAsync"))
{
// API present!
// Unlock the pin to taskbar feature
var result = LimitedAccessFeatures.TryUnlockFeature(
"com.microsoft.windows.secondarytilemanagement",
"<tokenFromMicrosoft>",
"<publisher> has registered their use of com.microsoft.windows.secondarytilemanagement with Microsoft and agrees to the terms of use.");
// If unlock succeeded
if ((result.Status == LimitedAccessFeatureStatus.Available) ||
(result.Status == LimitedAccessFeatureStatus.AvailableWithoutToken))
{
// Continue
}
else
{
// Don't show pin to taskbar button or call any of the below APIs
}
}
else
{
// Don't show pin to taskbar button or call any of the below APIs
}
2. Abrufen der TaskbarManager-Instanz
Windows-Apps können auf einer Vielzahl von Geräten ausgeführt werden. Nicht alle von ihnen unterstützen die Taskleiste. Derzeit unterstützen nur Desktopgeräte die Taskleiste. Darüber hinaus kann das Vorhandensein der Taskleiste kommen und gehen. Um zu überprüfen, ob die Taskleiste derzeit vorhanden ist, rufen Sie die TaskbarManager.GetDefault-Methode auf, und überprüfen Sie, ob die zurückgegebene Instanz nicht NULL ist. Zeigen Sie keine Schaltfläche zum Anheften an, wenn die Taskleiste nicht vorhanden ist.
Es wird empfohlen, die Instanz für die Dauer eines einzelnen Vorgangs wie anheften und dann eine neue Instanz zu greifen, wenn Sie das nächste Mal einen anderen Vorgang ausführen müssen.
TaskbarManager taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager != null)
{
// Continue
}
else
{
// Taskbar not present, don't display a pin button
}
3. Überprüfen Sie, ob die Kachel derzeit an die Taskleiste angeheftet ist.
Wenn die Kachel bereits angeheftet ist, sollten Sie stattdessen eine Lösen-Schaltfläche anzeigen. Mit der IsSecondaryTilePinnedAsync-Methode können Sie überprüfen, ob die Kachel aktuell angeheftet ist (Benutzer können sie jederzeit lösen). In dieser Methode übergeben Sie die TileId
Kachel, die Sie kennen möchten, angeheftet ist.
if (await taskbarManager.IsSecondaryTilePinnedAsync("myTileId"))
{
// The tile is already pinned. Display the unpin button.
}
else
{
// The tile is not pinned. Display the pin button.
}
4. Überprüfen, ob das Anheften zulässig ist
Das Anheften an die Taskleiste kann durch Gruppenrichtlinien deaktiviert werden. Mit der TaskbarManager.IsPinningAllowed-Eigenschaft können Sie überprüfen, ob das Anheften zulässig ist.
Wenn der Benutzer auf die Schaltfläche "Anheften" klickt, sollten Sie diese Eigenschaft überprüfen. Wenn dies falsch ist, sollten Sie ein Meldungsdialogfeld anzeigen, in dem der Benutzer darüber informiert wird, dass das Anheften auf diesem Computer nicht zulässig ist.
TaskbarManager taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager == null)
{
// Display message dialog informing user that taskbar is no longer present, and then hide the button
}
else if (taskbarManager.IsPinningAllowed == false)
{
// Display message dialog informing user pinning is not allowed on this machine
}
else
{
// Continue pinning
}
5. Erstellen und Anheften der Kachel
Der Benutzer hat auf die Schaltfläche "Anheften" geklickt, und Sie haben festgestellt, dass die APIs vorhanden sind, die Taskleiste vorhanden ist und das Anheften zulässig ist... Zeit zum Anheften!
Erstellen Sie zunächst die sekundäre Kachel wie beim Anheften an "Start". Weitere Informationen zu den Eigenschaften der sekundären Kachel erhalten Sie, indem Sie sekundäre Kacheln an "Start" lesen. Beim Anheften an die Taskleiste ist jedoch zusätzlich zu den zuvor erforderlichen Eigenschaften auch Square44x44Logo (dies ist das logo, das von der Taskleiste verwendet wird) erforderlich. Andernfalls wird eine Ausnahme ausgelöst.
Übergeben Sie dann die Kachel an die RequestPinSecondaryTileAsync-Methode . Da dies unter eingeschränktem Zugriff liegt, wird dadurch kein Bestätigungsdialogfeld angezeigt, und es ist kein UI-Thread erforderlich. Wenn dies jedoch über eingeschränkten Zugriff hinaus geöffnet wird, erhalten Aufrufer, die keinen eingeschränkten Zugriff nutzen, ein Dialogfeld und müssen den UI-Thread verwenden.
// Initialize the tile (all properties below are required)
SecondaryTile tile = new SecondaryTile("myTileId");
tile.DisplayName = "PowerPoint 2016 (Remote)";
tile.Arguments = "app=powerpoint";
tile.VisualElements.Square44x44Logo = new Uri("ms-appdata:///AppIcons/PowerPoint_Square44x44Logo.png");
tile.VisualElements.Square150x150Logo = new Uri("ms-appdata:///AppIcons/PowerPoint_Square150x150Logo.png");
// Pin it to the taskbar
bool isPinned = await taskbarManager.RequestPinSecondaryTileAsync(tile);
Diese Methode gibt einen booleschen Wert zurück, der angibt, ob die Kachel jetzt an die Taskleiste angeheftet ist. Wenn die Kachel bereits angeheftet wurde, aktualisiert die Methode die vorhandene Kachel und gibt diese zurück true
. Wenn das Anheften nicht zulässig war oder die Taskleiste nicht unterstützt wird, wird die Methode zurückgegeben false
.
Aufzählen von Kacheln
Verwenden Sie FindAllAsync, um alle von Ihnen erstellten Kacheln anzuzeigen und an einer beliebigen Stelle (Start, Taskleiste oder beides) anzuheften. Anschließend können Sie überprüfen, ob diese Kacheln an die Taskleiste und/oder "Start" angeheftet sind. Wenn die Oberfläche nicht unterstützt wird, geben diese Methoden "false" zurück.
var taskbarManager = TaskbarManager.GetDefault();
var startScreenManager = StartScreenManager.GetDefault();
// Look through all tiles
foreach (SecondaryTile tile in await SecondaryTile.FindAllAsync())
{
if (taskbarManager != null && await taskbarManager.IsSecondaryTilePinnedAsync(tile.TileId))
{
// Tile is pinned to the taskbar
}
if (startScreenManager != null && await startScreenManager.ContainsSecondaryTileAsync(tile.TileId))
{
// Tile is pinned to Start
}
}
Aktualisieren einer Kachel
Um eine bereits angeheftete Kachel zu aktualisieren, können Sie die SecondaryTile.UpdateAsync-Methode verwenden, wie unter Aktualisieren einer sekundären Kachel beschrieben.
Lösen einer Kachel
Ihre App sollte eine Lösen-Schaltfläche bereitstellen, wenn die Kachel zurzeit angeheftet ist. Um die Kachel aufzuheben, rufen Sie einfach TryUnpinSecondaryTileAsync auf, und übergeben Sie die TileId
sekundäre Kachel, die Sie lösen möchten.
Diese Methode gibt einen booleschen Wert zurück, der angibt, ob die Kachel nicht mehr an die Taskleiste angeheftet ist. Wenn Die Kachel nicht an erster Stelle angeheftet wurde, wird dies auch zurückgegeben true
. Wenn das Lösen nicht zulässig war, wird dies zurückgegeben false
.
Wenn die Kachel nur an die Taskleiste angeheftet wurde, wird die Kachel gelöscht, da sie nicht mehr an eine beliebige Stelle angeheftet ist.
var taskbarManager = TaskbarManager.GetDefault();
if (taskbarManager != null)
{
bool isUnpinned = await taskbarManager.TryUnpinSecondaryTileAsync("myTileId");
}
Löschen einer Kachel
Wenn Sie eine Kachel von überall lösen möchten (Start, Taskleiste), verwenden Sie die RequestDeleteAsync-Methode .
Dies ist für Fälle geeignet, in denen der vom Benutzer angeheftete Inhalt nicht mehr anwendbar ist. Wenn Ihre App beispielsweise ein Notizbuch an die Start- und Taskleiste anheften kann, und der Benutzer das Notizbuch löscht, sollten Sie einfach die dem Notizbuch zugeordnete Kachel löschen.
// Initialize a secondary tile with the same tile ID you want removed.
// Or, locate it with FindAllAsync()
SecondaryTile toBeDeleted = new SecondaryTile(tileId);
// And then delete the tile
await toBeDeleted.RequestDeleteAsync();
Lösen Sie nur von "Start"
Wenn Sie eine sekundäre Kachel nur von "Start" lösen möchten, während Sie sie auf der Taskleiste verlassen, können Sie die StartScreenManager.TryRemoveSecondaryTileAsync-Methode aufrufen. Dadurch wird die Kachel ebenfalls gelöscht, wenn sie nicht mehr an andere Oberflächen angeheftet ist.
Diese Methode gibt einen booleschen Wert zurück, der angibt, ob die Kachel nicht mehr an "Start" angeheftet ist. Wenn Die Kachel nicht an erster Stelle angeheftet wurde, wird dies auch zurückgegeben true
. Wenn das Lösen nicht zulässig war oder Start nicht unterstützt wird, wird dies zurückgegeben false
.
await StartScreenManager.GetDefault().TryRemoveSecondaryTileAsync("myTileId");