Подпишись на наш Twitter

Быть в курсе появления новых статей!

Продолжая серию статей основанных на презентациях, которые я давал в Европе, сегодня я вернусь к Tiles и рассмотрим создание Secondary tiles.

Secondary tile может быть создан пользователем и закреплен в стартовом меню для предоставления более широкого доступа к вашей программе. Классический пример secondary tile это закрепление тайла приложения о погоде для вашего города или указание акции в вашем портфеле.

Я урезал пример из Microsoft SDK для своих нужд, чтобы было проще понять процесс создания secondary tile.

Для начала создания нового приложения и как указано в статье Live Tiles добавьте проект NotificationsExtensions который идет с Microsoft SDK в простом приложении про тайлы.

На домашней странице добавьте эту разметку XAML:


   
        
        

Это создаст TextBlock для показа сообщения в случае обновления и кнопку для создания тайла.

Вам надо создать две картинки для тайла (или скачать исходники для этого проекта) и поместить их в вашу assets папку. Одна для широкого тайла, а вторая для квадратного.

Мы начнем обработчик события с получения URL для этих картинок:

private async void xCreate_Click_1(object sender, RoutedEventArgs e)
{
    Uri logo = new Uri("ms-appx:///Assets/squareTile-sdk.png");
    Uri wideLogo = new Uri("ms-appx:///Assets/tile-sdk.png");

Вы можете передать ActivationArguments в ваш тайл, что даст вам понять при активации, какой тайл нажат и что делать в вашей программе. Мы создадим строку для ActivationArguments:

string tileActivationArguments = dynamicTileId + 
     " WasPinnedAt=" + DateTime.Now.ToLocalTime().ToString();

Константа dynamicTileID определена в самом начале файла, но может быть получена из базы данных и т.д.

Теперь мы готовы создать Secondary tile:

SecondaryTile secondaryTile = 
   new SecondaryTile(dynamicTileId,
           "A Live Secondary Tile (JL)",
           "Secondary Tile Sample Live Secondary Tile(JL)",
           tileActivationArguments,
           TileOptions.ShowNameOnLogo | TileOptions.ShowNameOnWideLogo,
           logo,
           wideLogo);

С параметрами:

  • Строка, представляющая ID
  • Строка, представляющая короткое имя
  • Строка, представляющая отображаемое имя
  • Строка для ActivationArguments
  • TileOptions (как перечисляемая константа)
  • URI для логотипа в квадратном тайле
  • URI для логотипа в широком тайле

Теперь вы можете установить свойства для secondary tile, такие как цвет текста:

secondaryTile.ForegroundText = ForegroundText.Light;

Теперь у вас есть готовые экземпляр тайла и можно закрепить его в стартовом меню. Для этого надо вызвать RequestCreateForSelectionAsync в secondary tile и передать расположение, где вы хотите разместить:

bool isPinned = 
    await secondaryTile.RequestCreateForSelectionAsync(
        GetElementRect((FrameworkElement)sender), Windows.UI.Popups.Placement.Below);

Обратите внимание что GetElementRect это простой вспомогательный метод, который возвращает прямоугольник, предоставленный для FrameworkElement.

Если возвращенное значение true, то вы успешно закрепили свой secondary tile:

if (isPinned)
 {
     xMessage.Text = "Secondary tile successfully pinned.";
 }
 else
 {
     xMessage.Text = "Secondary tile not pinned.";
 }

Скачать исходный код можно здесь

Оригинал: Windows 8–Secondary Tiles




Дата публикации: 27.09.2012 20:00

Ярлыки: Tiles, Tutorial, WPF, WinRT, Windows 8