разные данные для разных живых плиток в одном приложении?

#windows-phone-7 #live-tile

#windows-телефон-7 #живая плитка #windows-phone-7

Вопрос:

Я пытаюсь создать интерфейс, в котором пользователь может создавать данные, которые передаются в плитку приложения, «вторичную» плитку и / или «третичную» плитку. Однако происходит следующее: когда я обновляю одну из трех плиток, ВСЕ плитки обновляются одним и тем же потоком данных… Это ограничение, которое действует с живыми плитками, или я что-то упускаю?

Вот фрагмент того, что я пытаюсь сделать….

             ShellTile tile = null;
            StandardTileData tileData = null;

            switch (tileInfo.type)
            {
                case "Application":
                    tile = ShellTile.ActiveTiles.First();
                    tileData = new StandardTileData
                    {
                        BackBackgroundImage = new Uri(isoStoreTileImage, UriKind.Absolute)
                    };
                    // If the file already exists, update it.
                    if (tile != null)
                    {
                        tile.Update(tileData);
                    }
                    break;
                case "Secondary":
                    tile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("Secondary"));
                    tileData = new StandardTileData
                    {
                        BackgroundImage = new Uri(isoStoreTileImage, UriKind.Absolute)
                    };
                    // If the file already exists, update it.
                    if (tile != null)
                    {
                        tile.Update(tileData);
                    }
                    else
                    {
                        // Otherwise, create a new tile. 
                        ShellTile.Create(new Uri(tileInfo.uri, UriKind.Relative), tileData);
                    }
                    break;
                case "Tertiary":
                    tile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("Tertiary"));
                    tileData = new StandardTileData
                    {
                        BackgroundImage = new Uri(isoStoreTileImage, UriKind.Absolute)
                    };
                    // If the file already exists, update it.
                    if (tile != null)
                    {
                        tile.Update(tileData);
                    }
                    else
                    {
                        // Otherwise, create a new tile. 
                        ShellTile.Create(new Uri(tileInfo.uri, UriKind.Relative), tileData);
                    }
                    break;
            }
  

Комментарии:

1. Просто обратите внимание, что использование ShellTile.Create in a PeriodicTask не пройдет сертификацию marketplace.

Ответ №1:

Вы используете одну и ту же isoStoreTileImage переменную для всех 3 StandardTileData экземпляров. Это означает, что вы будете переопределять одно и то же изображение.

Предположение гласит, что вы используете один и тот же URI изображения для всех 3 плиток и, таким образом, обновляете их одними и теми же данными 😉