2011-09-09 18 views
9

Tworzę żywo płytki na urządzeniu z następującego kodu:WP7 Mango: Jak usunąć kafelek na żywo?

ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault(); 
StandardTileData newTileData = new StandardTileData 
{ 
    BackgroundImage = new Uri(string.Format("isostore:{0}", DefaultLiveTilePath), UriKind.Absolute), 
    Title = "Test" 
}; 
tile.Update(newTileData); 

W późniejszym momencie chciałbym usunąć fragmentu obrazu na żywo i mają na to powrócić do ikony aplikacji, gdy przypięty. czy to możliwe?

+0

nie można po prostu użyć tego samego kodu, aby przywrócić oryginalny obraz? W końcu oryginał jest spakowany wraz z aplikacją. – Praetorian

+0

Tak, ale problem polega na tym, że używam również obrazu Wstecz i zawartości kafelka. Kiedy przywracam oryginalny obraz, nie chcę, żeby się przewracał. Ustawienie tylnej treści i backbackground na wartość null też nie działa, więc pomyślałem, że najlepiej będzie sprawdzić, czy istnieje sposób na całkowite usunięcie mojego kafelka. –

+5

Czy http://stackoverflow.com/questions/6573806/mango-application-tile-remove-back nie podstęp? –

Odpowiedz

6

Według tego blog shoudl użyć tego kodu

public void DeleteExistingTile() 
{ 
    var foundTile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("DetailId=123")); 

    // If the Tile was found, then delete it. 
    if (foundTile != null) 
    { 
     foundTile.Delete(); 
    } 
} 
+0

Ten kod pokazuje, jak usunąć dodatkowy kafelek, a nie jak zresetować podstawowy kafelek aplikacji. –

+0

Przepraszamy, źle zrozumiałem pytanie. –

3

Używam następujący kod podczas resetowania moje płytki z powrotem do normalnego za każdym razem uruchamia aplikacji:

private void ResetLiveTileToNormal() 
    { 
     ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(); 


     ShellTileData shellData = new StandardTileData 
     { 
      Title = "XXXXXXXX", 
      Count = 0, 
      BackContent = "", 
      BackTitle = "", 
      BackBackgroundImage = new Uri("", UriKind.Relative), 
      BackgroundImage = new Uri(@"/Images/LiveTiles/XXXXXX.png", UriKind.Relative) 
     }; 
     TileToFind.Update(shellData); 
    } 
2

ShellTile.ActiveTiles.FirstOrDefault(); jest przestarzała.

void clearTile() { 

      ShellTileData tileData = new StandardTileData 
      { 
       Title = "", 
       Count = 0, 
       BackContent = "", 
       BackTitle = "", 
       BackBackgroundImage = new Uri("", UriKind.Relative), 
       BackgroundImage = new Uri(@"/ApplicationIcon.png", UriKind.Relative) 
      }; 
      IEnumerator<ShellTile> it = ShellTile.ActiveTiles.GetEnumerator(); 
      it.MoveNext(); 
      ShellTile tile = it.Current; 
      tile.Update(tileData); 
     } 

Na podstawie badań i dzięki robertftw