我们现在将探索Silverlight对可以安装在最终用户机器上的应用程序的支持,以便像在普通的Windows应用程序一样在Web浏览器之外运行.您可能希望应用程序能够在浏览器外运行并减去以下三个主要原因;
交互
离线
信任提升
它可以实现更好的交互设计. Web的导航模型不是特别适合某些应用程序.例如,地址栏和后退按钮可能是浪费空间,而且没用.
Silverlight的重要性如下所示 :
Web应用程序可以使用客户端技术(如Silverlight,Flash或AJAX)为单个页面提供连续更新,可能无需导航到其他页面页面.
在某些应用程序中,用户可能会花费很多分钟甚至数小时浏览器认为是单页.
对于这种类型的应用程序,返回按钮最终可能会退出应用程序,因为它会将您转发回任何页面你进入应用程序之前就已经开始了.
很明显,通过耗尽浏览器,非类似网络的应用程序通常会得到更好的服务,因为这会得到更好的服务摆脱浏览器Chrome.通常,可用性不是浏览器用完的唯一原因.
另一个使用此功能的原因是启用脱机执行.安装Silverlight应用程序以进行浏览器外操作时,会将其复制到本地计算机上的每个用户存储库,并通过常用的操作系统机制启动应用程序,例如Windows上的"开始"菜单./p>
即使用户没有互联网连接,该应用程序也可用.
显然,这仅对不完全依赖服务器端信息的应用程序有用.
例如,如果没有网络连接,包裹递送服务的自动跟踪应用程序将没有多大用处.
对于某些应用程序,能够在偶尔使用时继续工作连接失败非常有帮助.
Silverlight的第4版增加了对可信应用程序的支持. Silverlight的安全沙箱通常会阻止某些特权操作,例如访问用户的文件.
但是,浏览器外的应用程序可能会请求提升.如果用户授予该请求,则应用程序可以执行任何常规Windows应用程序可以执行的更多工作,例如使用COM自动化或自定义窗口边框.
在浏览器中运行的应用程序永远不会受信任,因此如果要使用这些功能,则必须编写一个outof-browser应用程序.
我们如何编写浏览器外的应用程序?这很容易.我们必须更改Silverlight的项目属性中的单个设置,它只是为 AppManifest.xaml 添加合适的设置.
让我们看看它是如何工作的.
当您的清单表明支持浏览器外执行时,这没有初始效果.该应用程序将照常在浏览器中运行.
但是,如果用户右键单击,标准Silverlight ContextMenu 会额外提供要在计算机上安装应用程序的项目.
如果用户选择该项目,则会出现一个对话框,要求确认.它还询问是否可以从"开始"菜单,桌面或两者同时访问该应用程序.
您不必依赖上下文菜单.您还可以提供一个用户可以单击以安装应用程序的按钮,因为有一个API,您可以调用以启动安装.
当你踢以编程方式关闭安装,用户仍然看到对话框.未经用户同意,您无法安装自己的应用.
这是一个非常简单的Silverlight应用程序.下面给出的是它的XAML代码.
<UserControl x:Class = "SimpleOob.MainPage" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable = "d" d:DesignHeight = "300" d:DesignWidth = "400"> <Grid x:Name = "LayoutRoot" Background = "White"> <Border BorderBrush = "Blue" BorderThickness = "4" CornerRadius = "20" > <Border.Background> <LinearGradientBrush StartPoint = "0,0" EndPoint = "0,1"> <GradientStop Offset = "0.0" Color = "White" /> <GradientStop Offset = "0.15" Color = "#cef" /> <GradientStop Offset = "1.0" Color = "White" /> </LinearGradientBrush> </Border.Background> <TextBlock HorizontalAlignment = "Center" VerticalAlignment = "Center" Text = "Silverlight Application" TextOptions.TextHintingMode = "Animated" TextAlignment = "Center" TextWrapping = "Wrap" FontSize = "72" FontFamily = "Trebuchet MS" > <TextBlock.Effect> <DropShadowEffect Color = "#888" /> </TextBlock.Effect> </TextBlock> </Border> </Grid> </UserControl>
第1步 : 要启用浏览器外执行,请转到项目的属性,然后单击Silverlight选项卡.我们需要做的就是减去;选中启用正在运行的应用程序退出浏览器复选框.
如果你运行这个应用程序,你会注意到你根本就没有网页浏览器.
事实上,Visual Studio已代表您做出决定.当您启用浏览器外执行时,它会不公平地更改您的调试设置.
步骤2 : 所以,在解决方案资源管理器中,请注意Silverlight项目现在是粗体,表示它是一个启动项目.
之前并非如此.这是网络项目.现在,我们不希望这样,因为我们想要显示该复选框如何为最终用户更改内容.
第3步 : 我们将web项目设置为StartUp Project.
第4步 : 再次运行应用程序,您将看到应用程序现在回到浏览器中.
第5步 : 右键单击该网页.你会注意到上下文菜单中常用的Silverlight条目,还有一个要安装的额外项目.
第6步 : 当您选择第二个选项时,将显示安装应用程序对话框,如下所示.
请注意,它显示了网站的根URL,应用程序来自.我们正在使用Visual Studio提供的本地调试Web服务器,这就是为什么它说localhost.
第7步 : 单击确定,应用程序在独立于浏览器的自己的窗口中运行.
认为这个窗口以某种方式由浏览器拥有或连接到浏览器可能是很自然的,但事实并非如此.您可以关闭浏览器,此窗口保持不变.更重要的是,您可以关闭此窗口,然后在不使用浏览器的情况下重新运行应用程序.
步骤8 : 如果您在开始菜单中打开搜索对话框并开始输入应用程序名称,它就会像正常的Windows应用程序一样显示.
步骤9 : 您可以在浏览器无处可见的情况下运行它.
应用程序上的默认上下文菜单提供了一种简单的方法.用户可以合理地期望以与任何其他应用程序相同的方式卸载它.
您也可以通过右键单击网页并选择删除此应用程序... 来删除.
虽然我们只需更改一个设置即可启用out-of -browser操作,在实践中,你通常会想要做更多的事情. AppManifest.xaml 文件可以包含与浏览器外操作相关的几个设置,我们通常通过Visual Studio进行配置.
您可能已经注意到,当您选中复选框以启用运行out-ofbrowser 时,Visual Studio会启用一个标有浏览器外设置的按钮.
让我们点击一下来查看它按钮.它将生成以下对话框.
我们可以配置的第一件事是显示为窗口标题的文本.
我们也可以选择修复窗口尺寸和位置,但我们暂时将其自动保留.
此快捷方式名称显示在开始菜单中,以及应用程序安装后的桌面链接.
它也是文本出现在上下文菜单和安装应用程序对话框中.
当我将鼠标悬停在快捷方式上时,此应用程序说明会显示在工具提示中.
我们提供各种尺寸的图标.这些必须内置到您的项目中.