tile - Azulejo de aplicación de mango-remover
windows-phone-7 (3)
Bien, creo que lo tengo, y parece estar relacionado con un cambio en la forma en que se manejan los datos de mosaico ...
Anteriormente, establecer un valor en una cadena vacía ahora tendría efecto en el mosaico. Para eaxmple, establecer title = string.Empty dejaría el título existente en su lugar. Ahora, sin embargo, se borrará el título. Eso es bueno, significa que puedo eliminar BackTitle y BackContent string fácilmente. Estamos a mitad de camino.
Ahora, para deshacerse de BackBackgroundImage, la documentación indica "Si se configura en un URI vacío, no se mostrará BackBackgroundImage". - todo bien, excepto que no puedes crear un Uri vacío de una manera simple. La única forma en que lo he hecho es configurarlo en un valor Uri que no existe, por ejemplo,
BackBackgroundImage = new Uri("obviouslyMadeUpLocation", UriKind.Relative);
Habría esperado que se produjera una excepción al intentar aplicarlo al mosaico, pero no es así, simplemente borra la imagen de fondo.
Eso es todo. Todo lo que parece que debo hacer es llamar a lo siguiente para desactivar estas propiedades y volver a colocar mi mosaico como estaba.
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);
}
Esta es una pregunta simple y una tarea aparentemente simple, pero no puedo encontrar información sobre cómo lograr lo que debo hacer.
Tengo una aplicación cuyo mosaico principal (cuando está anclado) a veces debe ser el mosaico predeterminado de una sola cara y, a veces, necesita que se muestre información en la parte posterior del mosaico. Puedo agregar BackBackgroundImage, BackContent y BackTitle con éxito desde ScheduledActionService, pero no puedo eliminarlos cuando ya no son necesarios. Esta no es una ficha secundaria, por lo que no puedo eliminarla, volver a crearla y volver a agregarla.
¿Alguien sabe si es posible revertir un mosaico de doble cara a un solo lado a través de un código, y si es así, ¿cómo puedo lograr ese comportamiento, por favor?
EDITAR
La configuración que se aplica desde el objeto StandardTileData es aditiva: si solo especifica un título, por ejemplo, todos los demás elementos siguen siendo los mismos y solo se actualiza el título. He intentado establecer los tres parámetros que aparecen en la parte posterior del mosaico en nulo y tuve un éxito parcial. El efecto es que la imagen de fondo, el texto del título y el texto del contenido se eliminan, pero el mosaico todavía se voltea para mostrar un reverso completamente vacío.
EDITAR DE NUEVO
Entonces, al mirar la documentación, la parte posterior del azulejo se comporta de manera diferente al frente. Estableciendo el contenido de la parte posterior o el título de retorno a string.Empty los eliminará. Todo bien allí. Sin embargo, sí dice que "Si se establece en un URI vacío, no se mostrará la BackBackgroundImage". ¿Cómo hago para crear un Uri vacío? Intenté con el nuevo Uri (cadena, vacío), pero eso arroja una excepción al tratar de crear un Uri vacío, que es lo que estoy tratando de hacer.
Esta funciona para mí.
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);
}
Intente volver a configurar todo el mosaico (todos los detalles) como estaba antes / ahora, pero sin los detalles de fondo.
Actualizar
¿Esto no funciona ?:
ShellTile tile = ShellTile.ActiveTiles.First();
tile.Update(null);
o
tile.update(new StandardTileData());