Mango Application Tile - удалить обратно
Это простой вопрос и, казалось бы, простая задача, но я не могу найти никакой информации о том, как выполнить то, что мне нужно сделать.
У меня есть приложение, чья основная плитка (при закреплении) иногда должна быть стандартной односторонней плиткой по умолчанию, а иногда должна отображаться информация, отображаемая на обратной стороне плитки. Я могу добавить BackBackgroundImage, BackContent и BackTitle успешно из ScheduledActionService, но я не могу удалить их, когда они больше не требуются. Это не вторичная плитка, поэтому я не могу ее удалить и воссоздать и повторно добавить.
Кто-нибудь знает, можно ли вернуть двустороннюю черепицу обратно к одностороннему с помощью кода, и если да, то как я могу достичь этого поведения, пожалуйста?
ИЗМЕНИТЬ
Параметры, которые применяются к объекту StandardTileData, являются аддитивными - если вы укажете только заголовок, например, все остальные элементы остаются неизменными и обновляется только заголовок. Я попытался установить три параметра, которые появляются на обратной стороне плитки, до нуля и имел частичный успех. Эффект заключается в том, что фоновое изображение, текст заголовка и текст контента удалены, но плитка все еще переворачивается, чтобы показать полностью пустую обратную сторону.
ИЗМЕНИТЬ СНОВА
Итак, глядя на документацию, обрамление черепицы ведет себя по-другому по отношению к фронту. Установка обратного содержимого или backtitle на string.Empty удалит их. Там все хорошо. Однако он говорит, что "Если задано пустое URI, BackBackgroundImage не будет отображаться". Как я могу создать пустой Uri? Я попробовал новый Uri (string, Empty), но это порождает исключение из-за попытки создать пустой Uri - вот что я пытаюсь сделать.
Ответы
Ответ 1
ОК, я думаю, что у меня это есть, и похоже, это связано с изменением способа обработки данных плитки...
Раньше установка значения в пустую строку теперь имела бы эффект в плитке. Для примера, установка title= string.Empty оставит существующий заголовок на месте. Теперь, однако, он закроет заголовок. Это хорошо - это означает, что я могу легко удалить строки BackTitle и BackContent. Мы на полпути.
Теперь, чтобы избавиться от BackBackgroundImage, в документации указано: "Если установлен пустой URI, BackBackgroundImage не будет отображаться". - все хорошо, за исключением того, что вы не можете создать пустой Uri любым простым способом. Единственный способ, с помощью которого я работал, - установить значение Uri, которое не существует, например
BackBackgroundImage = new Uri("obviouslyMadeUpLocation", UriKind.Relative);
Я бы ожидал, что выкинуть исключение, когда вы попытаетесь применить его к плитке, но это не так - он просто очищает фоновое изображение.
Так что это. Все, что мне нужно сделать, это вызвать следующее, чтобы отключить эти свойства и поместить мой плит обратно, как это было.
private void ResetMyMainTile()
{
ShellTile tile = ShellTile.ActiveTiles.First();
StandardTileData data = new StandardTileData
{
BackBackgroundImage = new Uri("IDontExist",UriKind.Relative),
BackContent = string.Empty,
BackTitle = string.Empty
};
tile.Update(data);
}
Ответ 2
Это работает для меня.
new Uri("Background.png", UriKind.RelativeOrAbsolute);
ShellTile TileToFind = ShellTile.ActiveTiles.First();
if (TileToFind != null)
{
StandardTileData NewTileData = new StandardTileData
{
Title ="Status",
BackgroundImage = new Uri("Background.png", UriKind.RelativeOrAbsolute),
Count = 0,
BackTitle = "",
BackBackgroundImage = new Uri("doesntexist.png", UriKind.RelativeOrAbsolute),
BackContent = ""
};
TileToFind.Update(NewTileData);
}
Ответ 3
Попробуйте снова установить всю плитку (все детали) на все, что было до/сейчас, но без фоновых деталей.
Обновление
Это не работает?:
ShellTile tile = ShellTile.ActiveTiles.First();
tile.Update(null);
или
tile.update(new StandardTileData());