Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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 NavigationUri提取QueryString值_C#_Windows Phone 8_Live Tile - Fatal编程技术网

C# 如何从ShellTile NavigationUri提取QueryString值

C# 如何从ShellTile NavigationUri提取QueryString值,c#,windows-phone-8,live-tile,C#,Windows Phone 8,Live Tile,将ShellTile固定到“开始”屏幕时,我正在创建查询字符串,如下所示 var title = DateTime.Now.ToString(); string tileParameter = "uri=Title_" + title; ShellTile Tile = CheckIfTileExist(tileParameter); // Check if Tile's title has been used if (Tile == null) { ...

将ShellTile固定到“开始”屏幕时,我正在创建查询字符串,如下所示

var title = DateTime.Now.ToString();
string tileParameter = "uri=Title_" + title;

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

    ShellTile.Create(new Uri("/MainPage.xaml?" + "uri=Title_" + title, UriKind.Relative), LiveTile);  //pass the tile parameter as the QueryString
}
以及我的
CheckIfTileExists
方法

private ShellTile CheckIfTileExist(string tileUri)
{
    ShellTile shellTile = ShellTile.ActiveTiles.FirstOrDefault(tile => tile.NavigationUri.ToString().Contains(tileUri));
    return shellTile;
}
在这种情况下,一切正常。我的问题是,在沿路更新磁贴的
背景时,我需要检查特定磁贴是否已固定。我可能有多个ShellTile,因此我需要相应地更新所有背景。在下面的代码中,我尝试使用
foreach
语句来执行此操作,但是由于
CheckIfTileExists
方法只返回
FirstOrDefault
我只更新固定的第一个磁贴,即使我的
foreach
语句遍历了每个磁贴

string tileParameter = "uri=Title_";

foreach (var _tile in ShellTile.ActiveTiles)
{                    
    ShellTile Tile = CheckIfTileExist(tileParameter);  // Check if Tile's title has been used             
    if (Tile != null)
    {
        ... update Background color
    }
}

我如何修复我的循环,使它可以穿过每个被固定和更新的磁贴?我的想法是提取QueryString值,即创建磁贴时生成的
title
字符串值,并在更新时将其用于
CheckIfTileExists
方法中的
tileParameter
。这是如何实现的?

您可以使用
Where
而不是
FirstOrDefault
——它将返回所有匹配项:

string tileParameter = "uri=Title_";

foreach (var _tile in ShellTile.ActiveTiles
    .Where(tile => tile.NavigationUri.ToString().Contains(tileParameter))
{                    
    ... update Background color
}

好的,我试试这个。您是否建议最好创建
Where
check-in自己的方法,并调用类似于
CheckIfTileExists
的方法?@Matthew是的,我认为这是有意义的。