Silverlight for Windows Mobile非官方预览

简介:

背景

Windows Embedded CE 6.0 R3已经包含了Silverlight for Embedded的功能,开发人员可以使用WPF的方式来开发Wince应用程序。关于Silverlight for Embedded,我之前写了篇介绍性的文章,可以参考 User Interface Technologies for Windows Embedded CE

 

什么是Silverlight for Windows Mobile

严格来说说Silverlight是浏览器的插件技术,不是应用程序开发技术。桌面技术叫做WPF,但是微软又把用于Windows Embedded CE应用程序开发技术叫做Silverlight for Embedded。到底在Windows Mobile平台叫什么,我也不知道,甚至到底什么时候发布也没有官方消息。我姑且称之为Silverlight for Windows Mobile,这是非官方命名,只做学习交流用。其实这个名称可能不妥当,因为IE for Mobile在不久将来加入对Silverlight的支持,所以Silverlight for Windows Mobile有可能是专门针对Windows Mobile浏览器富应用的开发,but anyway,名字就那样定,我的blog我做主。由于Windows Embedded CE 6.0 R3的Silverlight for Embedded只是支持Native C++的开发,有很多人猜测哪怕Windows Mobile 7 出来了,(备注:Windows Mobile 7 是基于Windows Embedded CE 6的),.NET Compact Framework的开发还是没办法使用Silverlight。其实不是这样的,进过 軒轅 TX的介绍,微软最近发布的Bing™ for Windows phone是基于.NET Compact Framework,并且使用XAML技术来表现界面的程序。

 

实现预览

下面偷窥一下Bing™ for Windows phone 的实现,姑且算是Silverlight for Windows Mobile的非官方预览。Bing™ for Windows phone 把对XAML的分析和呈现都封装到BingClient.exe里面,我想未来的.NET Compact Framework会包含这些功能,现在微软只是在试验性的使用。先看一下安装目录。

Silverlight-Windows-Mobile-1

安装目录下包含了XAML文件夹,包含了所有界面布局和事件处理的定义。

Silverlight-Windows-Mobile-2

realhome.xaml用于表达主页面,主页面如下:

Silverlight-Windows-Mobile-5

其对应的XAML文件realhome.xaml如下:

Silverlight-Windows-Mobile-4

下面以菜单作为例子讲述其实现,下面是菜单部分XAML的定义

<MenuItem Id="9800100" Name="MenuItemSpeak" Header="Speak" Click="Speech(SearchTabControl.xaml,Home)" />
<
MenuItem Id="9800200" Name="MenuItemMain" Header="Menu">
<
MenuItem Id="9800201" Name="MenuItemMaps" Header="Maps and Traffic" Click="HideAutoSuggest(AutoSuggestTextbox);LaunchMap(MapHomePPC.xaml,MapHomeSP.xaml,TheMap,NoPoi)" />
<
MenuItem Id="9800202" Name="MenuItemBusinessDirectory" Header="Business Directory" Click="SetPropertyState(CurrentDomain,Local);SwitchPage(DomainLanding.xaml)" />
<
MenuItem Id="9800203" Name="MenuItemTopNews" Header="Top News" Click="SetPropertyState(CurrentDomain,News);SwitchPage(DomainLanding.xaml)" />
<
MenuItem Id="9800204" Name="MenuItemDirections" Header="Get Directions" Click="SwitchPage(MapLocationEntry.xaml)" />
<
MenuItem Id="9800205" Name="MenuItemFavorites" Header="Recent and Favorites" Click="SwitchPage(RecentsFavorites.xaml);SwitchListTab(FavoriteRecentsTab,FavoritesTabHeader,Background,#a7b4bd,White,Foreground,White,#a7b4bd);SetFocus(FavoritesTabHeader)" />
<
MenuItem Id="9800206" Name="MenuItemSeparator1" Header="-" />
<
MenuItem Id="9800207" Name="MenuItemClientUpdate" Header="Update Available" Click="UpdateClient" Enabled="{Binding PropertyState.AllowClientUpdate}"/>
<
MenuItem Id="9800208" Name="MenuItemSettings" Header="Settings" Click="SwitchPage(settings.xaml)" />
<
MenuItem Id="9800209" Name="MenuItemHelp" Header="Help">
<
MenuItem Id="9800219" Name="MenuItemHints" Header="Tips and Tricks" Click="SwitchPage(hintstips.xaml)" />
<
MenuItem Id="9800229" Name="MenuItemFaq" Header="FAQ" Click="GoToUrl(http://appserver.m.bing.net/webdocs/en-us/brew/help.htm)" />
<
MenuItem Id="9800239" Name="MenuItemAbout" Header="About" Click="SwitchPage(About.xaml)" />
<
MenuItem Id="9800249" Name="MenuItemFeedback" Header="Feedback" Click="GoToUrl(https://feedback.discoverbing.com/default.aspx?productkey=bingmobile|P1=WinMo,mkt,Market,P2,ModelNumber,P3,BinaryVersion,P4,OSVersion,P5,Partner)" />
</
MenuItem>
<
MenuItem Name="MenuItemClose" Id="2613" Header="Exit" Click="Close" />
</
MenuItem>

对应的菜单呈现如下:

Silverlight-Windows-Mobile-3

菜单类MenuItemEx继承了Winform的System.Windows.Forms.MenuItem。位于Microsoft.Search.Mobile.UI.Controls下,Microsoft.Search.Mobile.UI.Controls用于封装所有解析XAML和呈现的控件。

Silverlight-Windows-Mobile-6

Silverlight-Windows-Mobile-7

把各个控件呈现到Winform里面是通过一个form类View来实现。这样XAML就可以通过传统的Winform来呈现了。

public class View : Form
而这个View类由ViewManager类来控制到底如何呈现,呈现什么,如何转换呈现的内容。
public sealed class ViewManager : IViewManager
public interface IViewManager
{
void Dispose();
bool GoBack();
bool GoForward();
bool LoadView(string viewName, bool justParseXaml);
}

说到这里,有兴趣自己下载一个Bing™ for Windows phone 看一下。不管怎样,我还是很高兴知道微软在做Silverlight for Windows Mobile的开发,在不久的将来,我们就可以使用XAML的模式来开发Windows Mobile应用程序来。本文内容只是用于学习研究,不能有任何其他用途。


    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2009/12/17/Windows-Mobile-Silverlight-WPF.html,如需转载请自行联系原作者




相关文章
|
人工智能 搜索推荐 C#
C#开源且免费的Windows桌面快速预览神器 - QuickLook
C#开源且免费的Windows桌面快速预览神器 - QuickLook
212 0
|
开发工具 Windows
Windows平台RTMP推送|轻量级RTSP服务实现本地摄像头|屏幕|叠加数据预览
大家在做Windows平台RTMP推送或轻量级RTSP服务的时候,不管是采集屏幕还是采集摄像头,亦或屏幕摄像头的叠加模式,总会有这样的诉求,采集到的数据,希望能本地看看具体采集的数据或者图像实际效果,也就是本次介绍的“预览”功能。
242 0
|
4月前
|
开发框架 JavaScript .NET
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
|
Windows 网络协议
Windows Mobile远程控制软件Pocket Controller Pro简介
不仅PPC/WindowsMobile系统可以使用该控制软件,只要是WINCE内核的系统都可以使用,我在WinCE.net 4.2系统测试通过,只不过640*480的分辨率,控制速度不是那么理想。
972 0
|
数据格式 XML Windows
Windows Mobile 5.0编程—奥运场馆速查
我忙里偷闲,用VS2005开发了一个关于奥运场馆的小程序,时值2008北京奥运前夕,也算是为奥运做了“贡献”
698 0
|
Windows Web App开发 API
UWP 判断windows mobile是使用的实体键还是虚拟按键
原文:UWP 判断windows mobile是使用的实体键还是虚拟按键 最近在写启动屏幕,发现虚拟按钮会挡住,启动屏幕的最下面的元素,大概有50 px。可是有什么办法知道手机是用的实体键还是虚拟按键吗? 如下图。
1163 0