Windows Phone 8 Live плитки Обновление текста и изображений
Я создал приложение для Windows Phone 8 и хочу использовать живые плитки в моем приложении. Я даже ничего не знаю о живых плитках. Я перепробовал много примеров с форумов и все.
Но все они имеют форму кнопок (например, Flip, Cycle). Если я нажму кнопку Cycle, она перейдет на начальный экран, чтобы показать плитку цикла.
Но, как я мог реализовать в моем приложении. Я хочу показывать плитки жизни только тогда, когда пользователь прикрепляется к стартовому экрану.
кто-нибудь, помогите мне решить это????
Заранее спасибо.
1 ответ
Первое, что вам нужно знать, это то, что LiveTiles в Windows Phone 8 могут быть реализованы только из кода C#/.NET, а не C++. Собственные библиотеки не имеют доступа к LiveTiles, поэтому вам необходимо использовать.NET API.
Далее... если ваше приложение написано на C++ с DirectX, вам нужно использовать XAML с взаимодействием с Direct3D. Это означает, что у вас будет как минимум 2 проекта VS, один с использованием XAML/C#, другой с использованием C++. LiveTiles будут обновляться с помощью обратных вызовов и делегатов, отправляющих события из компонента C++ в компонент C# XAML. (Если ваше приложение использует только C#/.NET, вам не нужны никакие обратные вызовы)
Еще одна вещь: единственный тип LiveTile, который всегда работает на Windows Phone, это тип 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 имеет некоторые проблемы с z-порядком в WP8, а SwapChainBackgroundPanel не поддерживается в WP8.
PS: вы также должны сделать некоторые исследования относительно вторичных плиток.