我正试图使用Iconic磁贴模板在我的Windows Phone 8应用程序中创建第二个活动磁贴,但在创建磁贴时遇到异常。我得到的例外是:
"System.InvalidOperationException"类型的首次机会异常出现在Microsoft.Phone.ni.dll 中
附加信息:initialData只能是类型标准TileData。
我用来创建活动磁贴的方法是:
public void PinLock(Lock item)
{
Uri smallIcon = new Uri(item.IsLocked ? LockedIcon : UnlockedIcon, UriKind.Relative);
Uri largeIcon = new Uri(item.IsLocked ? LockedIcon : UnlockedIcon, UriKind.Relative);
var tileData = new IconicTileData
{
IconImage = largeIcon,
SmallIconImage = smallIcon,
Title = item.Name
};
string tileUri = "/MainPage.xaml?Action=LockDetails&LockId=" + item.Id;
ShellTile.Create(new Uri(tileUri, UriKind.Relative), tileData);
}
我在WMAppManifest.xml中设置了活动磁贴类型,如下所示:
<PrimaryToken TokenID="MyToken" TaskName="_default">
<TemplateIconic>
<SmallImageURI IsRelative="true" IsResource="false">Assetslock-icon.png</SmallImageURI>
<Count>0</Count>
<IconImageURI IsRelative="true" IsResource="false">Assetslock-icon.png</IconImageURI>
<Title>Locky</Title>
<Message>
</Message>
<BackgroundColor>
</BackgroundColor>
<HasLarge>false</HasLarge>
<LargeContent1>
</LargeContent1>
<LargeContent2>
</LargeContent2>
<LargeContent3>
</LargeContent3>
<DeviceLockImageURI IsRelative="true" IsResource="false">
</DeviceLockImageURI>
</TemplateIconic>
</PrimaryToken>
</Tokens>
我找不到任何正确方法的好例子,也找不到互联网上有其他人遇到这个异常消息。
我尝试过的其他东西:
- 首先使用StandardTemplateTileData创建辅助模板然后当我更新它时,尝试使用IconicTileData。这引发了例外
- 首先使用创建辅助模板StandardTemplateTileData,然后将其删除并替换为一个使用IconicTileData。这不起作用(引发相同的异常如上所述)
任何帮助或好的例子都将不胜感激。
答案在您的异常中。在开始屏幕上创建额外的瓦片时,只能使用从StandardTileData派生的类。这将限制您使用该类或它的一个派生实现FlipTileData。IconicTileData和CycleTileData源自较低级别的ShellTitleData。这个类也是StandardTileData的基础。
创建FlipTileData的一些示例可以在MSDN文档中找到,但由于它与上面的示例来自同一个基类,您可能只需更改类名并稍微修补一下XML就可以了。