使用标志性瓷砖模板创建活动瓷砖



我正试图使用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就可以了。

最新更新