使用标志性平铺模板创建实时图块

时间:2013-11-25 05:33:13

标签: c# windows-phone-8 secondary-live-tile

我正在尝试使用Iconic Tile模板在我的Windows Phone 8应用程序中创建辅助实时磁贴,并且在创建磁贴时出现异常。我得到的例外是:

  

类型'System.InvalidOperationException'的第一次机会异常   发生在Microsoft.Phone.ni.dll

     

附加信息:initialData只能是类型   StandardTileData。

我用来创建实时图块的方法是:

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">Assets\lock-icon.png</SmallImageURI>
    <Count>0</Count>
    <IconImageURI IsRelative="true" IsResource="false">Assets\lock-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。这不起作用(抛出同样的例外 如上所述)

非常感谢任何帮助或好的例子。

1 个答案:

答案 0 :(得分:1)

答案就在你的例外中。在开始屏幕上创建其他切片时,只能使用派生自StandardTileData的类。这限制了您到该类或其派生实现FlipTileDataIconicTileDataCycleTileData来自较低级ShellTitleData。该类也是StandardTileData的基础。

创建FlipTileData的一些示例可以在MSDN documentation上找到,但是因为它来自与上面示例相同的基类,所以您可以轻松更改类名并修补XML一点点。