Windows Phone 8 Live tiles文本&图像更新

时间:2013-10-04 06:51:33

标签: windows-phone-8 implementation live-tile

我为Windows Phone 8创建了一个应用程序,并希望在我的应用程序中实现Live tile。我对活瓷砖一无所知。我从论坛和所有人那里尝试过很多例子。

但所有都是按钮的形式(如翻转,循环)如果我单击循环按钮,它将指向开始屏幕以显示循环平铺。

但是,我怎么能在我的应用程序中实现。我想只在用户进入开始屏幕时显示生活图块。

任何人,帮我解决这个问题????

先谢谢。

1 个答案:

答案 0 :(得分:0)

首先需要知道的是,Windows Phone 8上的LiveTiles只能用C#/ .NET代码实现,而不能用C ++实现。本机库无权访问LiveTiles,因此您需要使用.NET API。

下一步...如果你的应用是用C ++用DirectX编写的,你需要将XAML与Direct3D互操作一起使用。这意味着你将拥有至少2个VS项目,一个使用XAML / C#,另一个使用C ++。 LiveTiles将通过回调和委托进行更新,将事件从C ++组件发送到C#XAML组件。 (如果您的应用仅使用C#/ .NET,则不需要任何回调)

还有一件事:唯一可以在Windows Phone上运行的LiveTile类型是FlipTile类型。如果你使用标志性瓷砖,WP8通常会忽略颜色,并且只显示白色和透明度。

以下是我的C ++组件的片段:

std:string dummyStd = "test string to display";
std::wstring dummyWs.assign(dummyStd.begin(), dummyStd.end());
Platform::String^ dummy = ref new Platform::String(separatorWs.c_str());

m_d3DInterop->OnLiveTilesUpdates(dummy);

和C#组件的片段:

public void OnLiveTilesUpdates(String s)
    {
        String szTitle = "title";
        String szText = s;
        ShellTile oTile = ShellTile.ActiveTiles.First();
        {
            FlipTileData oFliptile = new FlipTileData();
            oFliptile.Title = "";
            oFliptile.Count = 0;
            oFliptile.BackTitle = szText;

            oFliptile.BackContent = szTitle;
            oFliptile.WideBackContent = szTitle;

            oFliptile.SmallBackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontSmall.png", UriKind.Relative);
            oFliptile.BackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontMedium.png", UriKind.Relative);
            oFliptile.WideBackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontHigh.png", UriKind.Relative);

            oFliptile.BackBackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontMedium.png", UriKind.Relative);
            oFliptile.WideBackBackgroundImage = new Uri("/Assets/Tiles/FlipTileFrontHigh.png", UriKind.Relative);
            oTile.Update(oFliptile);
        }

请记住,您需要使用事件和委托/回调来绑定两段代码(仅当您将XAML与Direct3D互操作一起使用时)。 此外,如果你到达这里,你应该知道用于渲染的最佳组件是DrawingSurface,因为DrawingSurfaceBackgroundGrid在WP8中有一些z顺序问题,而WP8中不支持SwapChainBackgroundPanel。

PS:您还应该对二次瓷砖进行一些研究。