WP7芒果系统:如何删除实时磁贴?

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

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

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

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


你不能使用相同的代码来还原原始图像吗?毕竟,原始图像是与您的应用程序捆绑在一起的。 - Praetorian
是的,但问题是我还在使用磁贴的背景图像和内容。当我恢复原始图像时,我不希望它翻转过来。将后面的内容和背景图像设置为null也无法解决问题,因此我认为最好的方法是看看是否有一种方法可以彻底删除我的磁贴。 - James Cadd
5
这个链接 https://dev59.com/tmw15IYBdhLWcg3wfr5x 能否解决问题? - Ralf Ehlert
1
由于您无法从代码中删除Tile,因此Ralf Ehlert的答案是解决此问题的方法。 Ralf应该将他的评论作为回答添加到这个问题中。 - Claus Jørgensen
3个回答

6
根据这篇博客,您应该使用以下代码。
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();  
    }  
}  

该代码展示了如何删除一个次要磁贴,而不是如何重置应用程序的主要磁贴。 - Dare Obasanjo
抱歉,误解了问题。 - Mattias Cibien

3

每次应用程序启动时,我使用以下代码将平铺重置为正常状态:

    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();已经过时。

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的贡献


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接