Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在循环中更新ShellTile_C#_Windows Phone 8_Live Tile - Fatal编程技术网

C# 如何在循环中更新ShellTile

C# 如何在循环中更新ShellTile,c#,windows-phone-8,live-tile,C#,Windows Phone 8,Live Tile,我想能够通过循环的ShellTile的是固定在开始屏幕和更新的背景图像个别。我的问题是背景颜色没有正确地更新瓷砖。在按钮单击事件中,如果当前的tileCount大于0,则循环浏览Tile并更新颜色。在我的代码中,我可以看到循环正常工作,并且检索和更新了正确的磁贴,但是在开始屏幕上,几个磁贴具有相同的背景颜色,一些磁贴即使在不应该更新的情况下也会被更新。我无法找出问题所在,但我的代码如下 要注意的是,Settings.RecentTiles.Value包含根据ShellTile创建的日期时间创建的

我想能够通过循环的ShellTile的是固定在开始屏幕和更新的背景图像个别。我的问题是背景颜色没有正确地更新瓷砖。在按钮单击事件中,如果当前的tileCount大于0,则循环浏览Tile并更新颜色。在我的代码中,我可以看到循环正常工作,并且检索和更新了正确的磁贴,但是在开始屏幕上,几个磁贴具有相同的背景颜色,一些磁贴即使在不应该更新的情况下也会被更新。我无法找出问题所在,但我的代码如下

要注意的是,Settings.RecentTiles.Value包含根据ShellTile创建的日期时间创建的tile uri的ObservableCollection,我使用它的索引来搜索要更新的正确tile

按钮点击事件

if (tileCount > 0)
            {
                string title = null;
                title = Settings.RecentTiles.Value[tileCount - 1];
                string tileParameter = "uri=Tiles_" + title;

                ShellTile Tile = CheckIfTileExist(tileParameter);  // Check if Tile's title has been used             

                if (Tile != null)
                {
                    try
                    {
                        var LiveTile = new StandardTileData
                        {
                            BackgroundImage = background
                        };

                        Tile.Update(LiveTile);
                        tileCount -= 1;
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Error");
                    }
                }
            }
还有我的CheckIfTileExists方法


可能是因为您的磁贴具有相似的URI?我不使用Contains,而是使用Equals。好吧,它不认为Contains语句中的所有内容都是完全匹配的吗?我认为这可能是一个bug,每次我运行代码时,我都会看到正确的ShellTile Uri被更新,但是将更新多个ShellTile的固定。您能否提供一个快速示例,说明如何使用Equals检查ShellTile是否固定?我刚刚注意到我使用==运算符,下面是我确定是否固定了tile的代码:if ShellTile.ActiveTiles.Firstt=>t.NavigationUri.ToString==toPin.Urav!=无效的
private ShellTile CheckIfTileExist(string tileUri)
    {
        ShellTile shellTile = ShellTile.ActiveTiles.FirstOrDefault(tile => tile.NavigationUri.ToString().Contains(tileUri));
        return shellTile;
    }