WinRTLiveTileManager
WinRTLiveTileManager组件只兼容Windows 8和Windows 8.1
概念
WinRTLiveTileManager组件允许您创建与Microsoft Windows 8操作系统完全兼容的Windows表单应用程序,在Windows表单应用程序中使用此组件在Windows 8开始屏幕中为该应用程序创建动态Tile。
WinRTLiveTileManager组件需要在终端用户的机器上安装一个单独的DevExpress Live Tile Manager Windows Store应用程序,也可以将其安装在您的机器上来进行调试。DevExpress Live Tile Manager应用程序可以很容易地在微软Windows商店中找到,这个应用程序作为WinRTLiveTileManager WinForms组件和Windows 8启动画面之间的桥梁。对于最终用户来说,这个应用程序提供了一个UI,允许他们通过WinRTLiveTileManager组件在Windows 8启动画面上固定和取消固定动态Tile:
Live Tile由以下可视化元素组成:
- Tile Content ——可能包括多个文本行或图像取决于所选择的平铺模板,WinRTLiveTileManager支持微软Tile模板目录文章中列出的所有模板。
- Application Name——应用程序名称,显示在动态Tile中,通过WinRTLiveTileManager.ApplicationName属性指定。
- Badge——一个可选的元素,可以显示一个整数值,也可以显示一个包含的符号(错误、感叹号、通知等),使用WinRTLiveTileManager.UpdateBadge方法来指定一个Tile Badge。
- Background Image ——默认的动态Tile图像,通过WinRTLiveTileManager.DefaultTileImage属性指定。每当调用WinRTLiveTileManager.UpdateTile方法来应用一个新的Tile模板时,这个图像就会被替换。
开始
要使用WinRTLiveTileManager控件,打开现有的Windows表单项目,在Visual Studio工具箱中找到WinRTLiveTileManager组件,并将其拖放到应用程序表单中。
将承载WinForms应用(应用模块)的ContainerControl对象赋值给WinRTLiveTileManager.ContainerControl属性,以便将该应用(模块)与WinRTLiveTileManager组件关联起来,您还可以指定WinRTLiveTileManager.ApplicationName属性来设置在相应的动态Tile中显示的应用程序名称。
如果启动应用程序,然后切换到DevExpress Live Tile Manager Windows Store应用程序,您会看到一个Tile。这个Tile可以固定在Windows 8的启动画面上,但它是静态的,实际上还不是一个“Live”Tile。当应用程序正在运行但不集中时,动态Tile显示与当前应用程序状态相关的实时通知。要显示这些通知,请使用winrtlivetilemanageredatetile方法,这个方法用WideTile和SquareTile对象作为参数,这些对象分别包含大尺寸和普通尺寸Tile的Tile模板。下面的代码演示了一个示例:
C#:
WideTile myWideTile = WideTile.CreateTileWideText03("Sample Tile"); SquareTile mySquareTile = SquareTile.CreateTileSquareBlock("14", "April"); winRTLiveTileManager1.UpdateTile(myWideTile, mySquareTile);
VB.NET:
Dim myWideTile As WideTile = WideTile.CreateTileWideText03("Sample Tile") Dim mySquareTile As SquareTile = SquareTile.CreateTileSquareBlock("14", "April") winRTLiveTileManager1.UpdateTile(myWideTile, mySquareTile)
提示:所有创建Tile的方法都用上面提到的相应的Tile模板命名,您可以参考文章,并使用相应的方法来创建所需类型的Tile。
下图展示了一个通过上面的代码创建的宽平铺和方形平铺模板的例子。
如果在LiveTile中使用WideTile模板,您可以将null传递给WinRTLiveTileManager.UpdateTile方法,而不是SquareTile。但是强烈建议在更新动态Tile时同时传递一个WideTile和SquareTile对象,因为最终用户可以通过标准的Windows 8方法手动调整Tile的大小(要做到这一点,右键单击动态Tile,选择它,然后点击下面的应用程序栏中的“Larger”或“Smaller”选项)。
您可以在更新动态Tile的内容时选择更新其徽章,下面的代码为Tile设置了一个“New Message”标签:
C#:
winRTLiveTileManager1.UpdateBadge(WinRTLiveTileManager.BadgeGlyphTypes.newMessage);
VB.NET:
winRTLiveTileManager1.UpdateBadge(WinRTLiveTileManager.BadgeGlyphTypes.newMessage)
如果应用程序有多个模块,且每个模块都包含一个WinRTLiveTileManager组件,并且多个动态Tile固定在Windows 8开始屏幕上,此时可以获得最终用户点击的Tile。为此,调用WinRTLiveTileManagerInitializeNavigation方法并处理WinRTLiveTileManagerOnNavigated事件,如下所示。
C#:
public Form1() { InitializeComponent(); WinRTLiveTileManager.InitializeNavigation(); WinRTLiveTileManager.OnNavigated += WinRTLiveTileManager_OnNavigated; . . . } void WinRTLiveTileManager_OnNavigated(string obj) { //do something }
VB.NET:
Public Sub Form1() InitializeComponent() WinRTLiveTileManager.InitializeNavigation() AddHandler WinRTLiveTileManager.OnNavigated, AddressOf WinRTLiveTileManager_OnNavigated ... End Sub Private Sub WinRTLiveTileManager_OnNavigated(ByVal obj As String) 'do something End Sub
obj参数返回相关的WinRTLiveTileManager ID (WinRTLiveTileManager.Id属性),因此您可以检查ID并获得被单击的LiveTile。每个WinRTLiveTileManager的ID是自动生成的,不可修改。