Закрепление вспомогательных плиток в меню "Пуск"

В этом разделе описаны действия по созданию вторичной плитки для приложения Windows и закреплению ее на меню .

Screenshot of secondary tiles

Дополнительные сведения о дополнительных плитках см. в обзоре дополнительных плиток.

Добавление пространства имен

Пространство имен Windows.UI.StartScreen включает класс SecondaryTile.

using Windows.UI.StartScreen;

Инициализация вторичной плитки

Вторичные плитки состоят из нескольких ключевых компонентов...

  • TileId: уникальный идентификатор, позволяющий идентифицировать плитку среди других дополнительных плиток.
  • DisplayName: имя, отображаемое на плитке.
  • Аргументы: аргументы, которые вы хотите передать в приложение, когда пользователь щелкает плитку.
  • Square150x150Logo: обязательный логотип, отображаемый на плитке среднего размера (и размер плитки небольшого размера, если не указан небольшой логотип).

Необходимо указать инициализированные значения для всех указанных выше свойств или вы получите исключение.

Существует множество конструкторов, которые можно использовать, но с помощью конструктора, который принимает в плитке Идентификатор, displayName, аргументы, square150x150Logo и desiredSize, помогает настроить все необходимые свойства.

// Construct a unique tile ID, which you will need to use later for updating the tile
string tileId = "City" + zipCode;

// Use a display name you like
string displayName = cityName;

// Provide all the required info in arguments so that when user
// clicks your tile, you can navigate them to the correct content
string arguments = "action=viewCity&zipCode=" + zipCode;

// Initialize the tile with required arguments
SecondaryTile tile = new SecondaryTile(
    tileId,
    displayName,
    arguments,
    new Uri("ms-appx:///Assets/CityTiles/Square150x150Logo.png"),
    TileSize.Default);

Необязательно. Добавление поддержки для больших размеров плиток

Если вы будете отображать расширенные уведомления об плитке на вторичной плитке, скорее всего, вы захотите разрешить пользователю изменить размер плитки на широкий или большой размер, чтобы они могли видеть еще больше содержимого.

Чтобы включить широкие и большие размеры плиток, необходимо указать Wide310x150Logo и Square310x310Logo. Кроме того, если это возможно, следует указать Square71x71Logo для небольшого размера плитки (в противном случае мы опустим необходимый квадрат150x150Logo для небольшой плитки).

Кроме того, вы можете указать уникальный square44x44Logo, который при необходимости отображается в правом нижнем углу при наличии уведомления. Если он не указан, вместо этого будет использоваться square44x44Logo из основной плитки.

// Enable wide and large tile sizes
tile.VisualElements.Wide310x150Logo = new Uri("ms-appx:///Assets/CityTiles/Wide310x150Logo.png");
tile.VisualElements.Square310x310Logo = new Uri("ms-appx:///Assets/CityTiles/Square310x310Logo.png");

// Add a small size logo for better looking small tile
tile.VisualElements.Square71x71Logo = new Uri("ms-appx:///Assets/CityTiles/Square71x71Logo.png");

// Add a unique corner logo for the secondary tile
tile.VisualElements.Square44x44Logo = new Uri("ms-appx:///Assets/CityTiles/Square44x44Logo.png");

Необязательно. Включение отображаемого имени

По умолчанию отображаемое имя не отображается. Чтобы отобразить отображаемое имя в средней или широкой или большой, добавьте следующий код.

// Show the display name on all sizes
tile.VisualElements.ShowNameOnSquare150x150Logo = true;
tile.VisualElements.ShowNameOnWide310x150Logo = true;
tile.VisualElements.ShowNameOnSquare310x310Logo = true;

Необязательно: трехмерные вторичные плитки

Вы можете улучшить вторичную плитку для Windows Смешанная реальность, добавив трехмерные ресурсы. Пользователи могут размещать трехмерные плитки непосредственно в своем доме windows Смешанная реальность вместо меню при использовании приложения в среде Смешанная реальность. Например, можно создать 360° фотосферы, которые связываются непосредственно с приложением 360° средства просмотра фотографий, или позволить пользователям размещать трехмерную модель стула из каталога мебели, который открывает страницу сведений о ценах и цветах этого объекта при выборе. Чтобы приступить к работе, ознакомьтесь с документацией разработчика Смешанная реальность.

Закрепление вторичной плитки

Наконец, запрос на закрепление плитки. Обратите внимание, что это должно вызываться из потока пользовательского интерфейса. На рабочем столе появится диалоговое окно с просьбой пользователя подтвердить, хотите ли они закрепить плитку.

Важно!

Если вы являетесь классическим приложением с помощью мост для классических приложений, необходимо сначала выполнить дополнительный шаг, как описано в разделе "Закрепить" из классических приложений.

// Pin the tile
bool isPinned = await tile.RequestCreateAsync();

// TODO: Update UI to reflect whether user can now either unpin or pin

Проверка наличия вторичной плитки

Если пользователь посещает страницу в приложении, которое уже закреплено на начальном экране, вместо этого отобразится кнопка "Открепить".

Поэтому при выборе кнопки для отображения необходимо сначала проверка, закреплена ли в настоящее время вторичная плитка.

// Check if the secondary tile is pinned
bool isPinned = SecondaryTile.Exists(tileId);

// TODO: Update UI to reflect whether user can either unpin or pin

Открепить вторичную плитку

Если плитка в настоящее время закреплена, и пользователь нажимает кнопку открепления, вы хотите открепить (удалить) плитку.

// Initialize a secondary tile with the same tile ID you want removed
SecondaryTile toBeDeleted = new SecondaryTile(tileId);

// And then unpin the tile
await toBeDeleted.RequestDeleteAsync();

Обновление вторичной плитки

Если вам нужно обновить логотипы, отображаемое имя или что-либо другое на вторичной плитке, можно использовать RequestUpdateAsync.

// Initialize a secondary tile with the same tile ID you want to update
SecondaryTile tile = new SecondaryTile(tileId);

// Assign ALL properties, including ones you aren't changing

// And then update it
await tile.UpdateAsync();

Перечисление всех закрепленных вторичных плиток

Если вам нужно обнаружить все плитки, закрепленные пользователем, вместо использования SecondaryTile.Exists можно также использовать SecondaryTile.FindAllAsync().

// Get all secondary tiles
var tiles = await SecondaryTile.FindAllAsync();

Отправка уведомления об плитке

Чтобы узнать, как отображать форматированный контент на плитке с помощью уведомлений об плитке, см . статью "Отправить локальное уведомление об плитке".