【问题标题】:WP7 Mango: How do I delete a live tile?WP7 Mango:如何删除动态磁贴?
【发布时间】:2011-09-09 20:30:08
【问题描述】:

我正在使用以下代码在设备上创建动态磁贴:

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

稍后我想删除动态磁贴图像并在固定时将其恢复为应用程序图标。这可能吗?

【问题讨论】:

  • 不能用同样的代码恢复原图吗?毕竟,原版是和你的应用一起打包的。
  • 是的,但问题是我也在使用磁贴的背面图像和内容。当我恢复原始图像时,我不希望它翻转。将后面的内容和背景图像设置为 null 也不起作用,所以我认为最好看看是否有办法完全删除我的图块。
  • 由于您无法从代码中删除 Tile,因此 Ralf Ehlert 的答案就是这样做的方法。 Ralf 应该添加他的评论作为对这个问题的回答。

标签: c# windows-phone-7 live-tile


【解决方案1】:

根据这个blog你应该使用这个代码

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();  
    }  
}  

【讨论】:

  • 该代码显示了如何删除辅助磁贴,而不是如何重置应用的主磁贴。
  • 抱歉,问题误解了。
【解决方案2】:

我在每次应用启动时将我的磁贴重置为正常时使用以下代码:

    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);
    }

【讨论】:

    【解决方案3】:

    ShellTile.ActiveTiles.FirstOrDefault(); 已过时。

    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);
            }
    

    基于研究并感谢 robertftw

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多