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: вы также должны сделать некоторые исследования относительно вторичных плиток.

Другие вопросы по тегам