Windows Phone 8中的自定义宽磁贴

本文关键字:自定义 Phone Windows | 更新日期: 2023-09-27 18:19:25

我现在有下面的代码,它为Tile创建了一个自定义布局。它只调整大小为中小型,而不是宽型。

我需要更新代码以支持Windows Phone 8的宽磁贴,但我需要能够自定义文本的显示位置。

代码使用了一个模板,我可以在其中更改平铺的背景和文本的位置。

关于我如何把它做成一块宽瓷砖,有什么想法吗?还可以在多行文本中输出。

  ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains(busStopName.Text));

            TileControl frontTile = new TileControl();
            TileName = "";
            TileName = busStopName.Text;
            TileData tileData = new TileData() {Text1 = busStopName.Text };
            frontTile.DataContext = tileData;
            frontTile.Measure(new Size(173, 173));
            frontTile.Arrange(new Rect(0, 0, 173, 173));
            var bmp = new WriteableBitmap(173, 173);
            bmp.Render(frontTile, null);
            bmp.Invalidate();
            var isf = IsolatedStorageFile.GetUserStoreForApplication();
            var filename = "/Shared/ShellContent/" + busStopName.Text + ".jpg";
            using (var stream = isf.OpenFile(filename, System.IO.FileMode.OpenOrCreate))
            {
                bmp.SaveJpeg(stream, 173, 173, 0, 100);
            }
            var data = new StandardTileData
            {
                BackgroundImage = new Uri("isostore:/Shared/ShellContent/" + busStopName.Text + ".jpg", UriKind.Absolute)
            };
            ShellTile.Create(new Uri("/LiveTimes.xaml?name=" + busStopName.Text, UriKind.Relative), data);

Windows Phone 8中的自定义宽磁贴

ShellTile具有用于创建的附加重载,该重载允许指定是否支持宽平铺的可选布尔参数。你需要使用它来支持宽瓷砖。

看看我的博客http://invokeit.wordpress.com/2013/05/09/fliptile-cycletile-and-various-iterations-of-wpdev-sdks/

http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207919(v=vs.105).aspx

顺便说一句,你需要使用一个新的互动程序模板,比如FlipTileData,然后传递它。StandardTileData无法支持wide,并且是从#wp7.5 继承的

http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206971(v=vs.105).aspx

FlipTileData TileData = new FlipTileData()
{
   Title = "[title]",
   BackTitle = "[back of Tile title]",
   BackContent = "[back of medium Tile size content]",
   WideBackContent = "[back of wide Tile size content]",
   Count = [count],
   SmallBackgroundImage = [small Tile size URI],
   BackgroundImage = [front of medium Tile size URI],
   BackBackgroundImage = [back of medium Tile size URI],
   WideBackgroundImage = [front of wide Tile size URI],
   WideBackBackgroundImage = [back of wide Tile size URI],
};
ShellTile.Create(new Uri("/LiveTimes.xaml?name=" + busStopName.Text, UriKind.Relative), TileData, true);