silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight 客�端桌面模式(OOB 模式)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

Silverlight 很酷的名字,在以前版本 Silverlight 只能承�在Web 上面,由於科技不�的更新�在Silverlight也可以做成桌面版模式去�行,是外�可以更好的�用���,�可以�用用�一些公用的�件如 Office 等功能。          本篇��文章只介�如何�建一�Silverlight 桌面程序 (OOB模式)。          ���件:必�是Silverl
@H_197_13@

Silverlight 很酷的名字,在以前版本 Silverlight 只能承�在Web 上面,由於科技不�的更新�在Silverlight也可以做成桌面版模式去�行,是外�可以更好的�用���,�可以�用用�一些公用的�件如 Office 功能

         本篇��文章只介�如何�建一�Silverlight 桌面程序 (OOB模式)

         ���件:必�是Silverlight 4.0 或以上版本,使用VS 2010 SP1或以上版本。

         本篇文章使用的是 VS 2012 Silverlight 5.0因�使用VS 2010 SP1 安�上比�麻�。

 

         第一步:�建�目方案 如�:

Silverlight 客�端桌面模式(OOB 模式)

 

��我把方案和�目名�起名� SL_Desktop 然後按�定出�下�:

Silverlight 客�端桌面模式(OOB 模式)

���定

 

��我�看到了���目SL_Desktop SL_Desktop.Web 一�是 Silverlight的界面��,另外一�承�的Silverlight�示的程序。

第二步:我�就需要�置一下Silverlight 的程序,在SL_Desktop �目右��性在Silverlight ��中看到允�在游�器外�行�用程序上打勾,如�:

Silverlight 客�端桌面模式(OOB 模式)

 

然後�� 游�器外�置按�,首先�置窗口你想�示的��名�,�置���后�度和高度你也可以�置��后的窗�位置�居中

�置快捷�名��可以�上�用程序的�明内容,�置快捷�的��,��一共有4种格式

重要的一部,UI的美�度�有需要�� 3D 效果就需要把使用GOD加速勾上。

�示安�菜��是勾上,��是在程序的右�可以安�程序到用��子上,可以按��者需要��置

�了�行�的�用�的操作系��程序的信任度提高我�把在游�器外�行�需要提升的信任勾上

最後出�窗口�式��

-�值就像: Windows 文件游�器一�有最小按� 最大化按�和��按�;

��框: 也就�有最小按� 最大化按�和��按�和���;

���角框: 在��框�置使用�角外��示,�����人比�喜�。

 

�置完成保存,�置界面如下�:

Silverlight 客�端桌面模式(OOB 模式)

 �了�示Silverlight 程序的��在 @H_179_19@mainPage.xaml 添加了一些 文字和按�如�:

Silverlight 客�端桌面模式(OOB 模式)

 

在按�添加��事件,用���程序。只要�用 Application.Current.MainWindow.Close(); 就可以了

 

 

第三步:�行看到�果如�:

 

Silverlight 客�端桌面模式(OOB 模式)

 

奇怪怎麽�是在Web上面�示呢? �急�有其他步�的在 Silverlight 右�看到菜�中 SL_Desktop 应用程序 安�到此�算���后,在Windows 的桌面和�始菜�的所有程序都�出�一�快捷方式”SL_Desktop 应用程序

Silverlight 客�端桌面模式(OOB 模式)

    

Silverlight 客�端桌面模式(OOB 模式)

如果已�安�后怎麽卸�呢可以在程序,可以在�行�程序后右���程序然後右��出��除�程序�用就�自�卸�完。

 

就�麽��程序就可以在 Web 模式 或者 桌面模式下�行

 

Silverlight 程序中判�用�是使用Web游�器�用�是使用桌面模式�用

 

第一步:在@H_945_20@mainPage.xaml 界面中增加一�TextBlock 控件 代�如下:

 
 
  1. <TextBlock x:Name="Txt_Msg" HorizontalAlignment="Center" @H_689_690@margin="0,60,0" textwrapping="Wrap" VerticalAlignment="Center" FontSize="20" FontWeight="Bold"/> 

第二部:@H_945_20@mainPage.xaml.cs 文件��造方法增加判�后在上面的TextBlock�示�果,判�方法只要使用Application.Current.IsRunningOutOfBrowser �性就可以知道�前程序使用什麽模式�示的。

代�如下:

 
 
  1. public MainPage()  
  2.     {  
  3.             initializeComponent();  
  4.  
  5.             if (Application.Current.IsRunningOutOfBrowser == true)  
  6.             {  
  7.                 //使用桌面模式  
  8.                 this.Txt_Msg.Text = "当前调用的是使用桌面模式";  
  9.             }  
  10.             else 
  11.             {  
  12.                 //使用的游览器  
  13.                 this.Txt_Msg.Text = "当前调用的是使用游览器模式";  
  14.             }  
  15. }  

第三部:�行�果如下:

Silverlight 客�端桌面模式(OOB 模式)

 

Silverlight�建安�桌面程序菜�

 

在用�的��中鼠�右�在Web程序�面是一�不友好的方式,所以最好�是在界面中�示安�按�,之前已���了判�在游�器中使用�是在游�器中使用。��我�就可以�示和�藏�安�按�。

第一步:�查用�是否有安��程序到桌面使用Application.Current.InstallState�性就可以了;

第二步:安�方法只要�用 Application.Current.Install() 就可以安�到用的�算�上;

第三部:用�需要知道安�情�,可以�� Application.Current.InstallStateChanged 事件��控安�情�;

        

完整修改代�如下:

 
 
  1.  /// <sumMary>  
  2.  /// Silverlight Demo  
  3.  /// </sumMary>  
  4.  public partial class MainPage : UserControl  
  5.  {  
  6.      public MainPage()  
  7.      {  
  8.          InitializeComponent();  
  9.          this.btn_Install.Visibility = System.Windows.Visibility.Collapsed;  
  10.          if (Application.Current.IsRunningOutOfBrowser == true)  
  11.          {  
  12.              //使用桌面模式  
  13.              this.Txt_Msg.Text = "当前调用的是使用桌面模式";  
  14.          }  
  15.          else 
  16.          {  
  17.              //使用的游览器  
  18.              this.Txt_Msg.Text = "当前调用的是使用游览器模式";  
  19.          }  
  20.  
  21.          this.displayInstallState();  
  22.  
  23.          Application.Current.InstallStateChanged += Current_InstallStateChanged;  
  24.      }  
  25.  
  26.      /// <sumMary>  
  27.      /// 检查安装状态  
  28.      /// </sumMary>  
  29.      private void displayInstallState()  
  30.      {  
  31.          switch (Application.Current.InstallStatE)  
  32.          {  
  33.              case InstallState.InstallFailed:  
  34.                  //不能将该应用程序安装为在浏览器外部运行  
  35.                  this.Txt_Status.Text = "不能将该应用程序安装为在浏览器外部运行";  
  36.                  break;  
  37.              case InstallState.Installed:  
  38.                  //已经将该应用程序安装为在浏览器外部运行  
  39.                  this.Txt_Status.Text = "已经将该应用程序安装为在浏览器外部运行";  
  40.                  break;  
  41.              case InstallState.Installing:  
  42.                  //正在将此应用程序安装为在浏览器外部运行  
  43.  
  44.                  this.Txt_Status.Text = "正在将此应用程序安装为在浏览器外部运行";  
  45.                  break;  
  46.              case InstallState.notinstalled:  
  47.                  //尚未将该应用程序安装为在浏览器外部运行  
  48.                  this.Txt_Status.Text = "尚未将该应用程序安装为在浏览器外部运行";  
  49.                  this.btn_Install.Visibility = System.Windows.Visibility.Visible;  
  50.                  break;  
  51.              default:  
  52.                  break;  
  53.          }  
  54.      }  
  55.  
  56.      //安装状态  
  57.      void Current_InstallStateChanged(object sender, EventArgs E)  
  58.      {  
  59.          this.displayInstallState();  
  60.      }  
  61.      //关闭按钮  
  62.      private void Button_Click_1(object sender, routedEventArgs E)  
  63.      {  
  64.          Application.Current.MainWindow.Close();  
  65.      }  
  66.      //安装按钮  
  67.      private void Btn_Install_Click(object sender, routedEventArgs E)  
  68.      {  
  69.          try 
  70.          {  
  71.              Application.Current.Install();   
  72.          }   
  73.          catch (InvalidoperationException)   
  74.          {   
  75.              messageBox.Show("应用已经安装.");   
  76.          }  
  77.  
  78.          catch (Exception)  
  79.          {  
  80.  
  81.              this.Txt_Status.Text = "安装失败";  
  82.          }  
  83.           
  84.      }  
  85. }  

 

Silverlight桌面程序自�更新功能

 

�在程序的安�都完成了�差什麽呢?大家一定猜了就是更新��,因���也算半�桌面程序那麽如果原程序更改了,客�端又不知道���致程序用�的不能正常使用程序了。�不能要用�每次打�游�器去做�除安���程序吧!�在我�就�解�����。

 

         所需要的方法 Application.Current.checkAndDownloadupdateAsync() �然也有事件可以知道更新的��只要��Application.Current.checkAndDownloadupdateCompleted 事件就可以清楚知道程序更新情�了

 

在界面上添加一�更新按�����事件内容事件Application.Current.checkAndDownloadupdateAsync()

在程序的�造方法中��事件 Application.Current.checkAndDownloadupdateCompleted  事件中 e.updateAvailable 可以知道 更新是否成功;

不���有很��的地方就是更新�然需要重�程序才能算真正的完成可惜在Silverlight程序��有�有重�程序的方法不�我想以後微��加入�些方法

代�如下

 

 
 
  1. /// <sumMary>  
  2. /// Silverlight Demo  
  3. /// </sumMary>  
  4. public partial class MainPage : UserControl  
  5. {  
  6.     public MainPage()  
  7.     {  
  8.         InitializeComponent();  
  9.         this.btn_Install.Visibility = System.Windows.Visibility.Collapsed;  
  10.         if (Application.Current.IsRunningOutOfBrowser == true)  
  11.         {  
  12.             //使用桌面模式  
  13.             this.Txt_Msg.Text = "当前调用的是使用桌面模式";  
  14.         }  
  15.         else 
  16.         {  
  17.             //使用的游览器  
  18.             this.Txt_Msg.Text = "当前调用的是使用游览器模式";  
  19.         }  
  20.  
  21.         this.displayInstallState();  
  22.         Application.Current.checkAndDownloadupdateCompleted += Current_checkAndDownloadupdateCompleted;  
  23.         Application.Current.InstallStateChanged += Current_InstallStateChanged;  
  24.     }  
  25.     //更新事件  
  26.     void Current_checkAndDownloadupdateCompleted(object sender, checkAndDownloadupdateCompletedEventArgs E)  
  27.     {  
  28.         if (e.updateAvailable == true && e.Error == null)  
  29.         {  
  30.             messageBox.Show("应用新版本已经下载成功,请重新启动程序。");  
  31.             Application.Current.MainWindow.Close();  
  32.         }  
  33.         else if (e.updateAvailable == false && e.Error == null)  
  34.         {  
  35.             messageBox.Show("已经是最新版本了。");  
  36.         }  
  37.         else if (e.Error != null)  
  38.         {  
  39.             messageBox.Show("在检测应用更新时, 出现以下错误信息:" + Environment.NewLine + Environment.NewLine + e.Error.messagE);  
  40.         }  
  41.     }  
  42.  
  43.     /// <sumMary>  
  44.     /// 检查安装状态  
  45.     /// </sumMary>  
  46.     private void displayInstallState()  
  47.     {  
  48.         switch (Application.Current.InstallStatE)  
  49.         {  
  50.             case InstallState.InstallFailed:  
  51.                 //不能将该应用程序安装为在浏览器外部运行  
  52.                 this.Txt_Status.Text = "不能将该应用程序安装为在浏览器外部运行";  
  53.                 break;  
  54.             case InstallState.Installed:  
  55.                 //已经将该应用程序安装为在浏览器外部运行  
  56.                 this.Txt_Status.Text = "已经将该应用程序安装为在浏览器外部运行";  
  57.                 break;  
  58.             case InstallState.Installing:  
  59.                 //正在将此应用程序安装为在浏览器外部运行  
  60.                 this.Txt_Status.Text = "正在将此应用程序安装为在浏览器外部运行";  
  61.                 break;  
  62.             case InstallState.notinstalled:  
  63.                 //尚未将该应用程序安装为在浏览器外部运行  
  64.                 this.Txt_Status.Text = "尚未将该应用程序安装为在浏览器外部运行";  
  65.                 this.btn_Install.Visibility = System.Windows.Visibility.Visible;  
  66.                 break;  
  67.             default:  
  68.                 break;  
  69.         }  
  70.     }  
  71.     //更新  
  72.     private void Button_Click_2(object sender, routedEventArgs E)  
  73.     {  
  74.         Application.Current.checkAndDownloadupdateAsync();  
  75.     }  
  76.     //安装状态  
  77.     void Current_InstallStateChanged(object sender, EventArgs E)  
  78.     {  
  79.         this.displayInstallState();  
  80.     }  
  81.     //关闭按钮  
  82.     private void Button_Click_1(object sender, routedEventArgs E)  
  83.     {  
  84.         Application.Current.MainWindow.Close();  
  85.     }  
  86.     //安装按钮  
  87.     private void Btn_Install_Click(object sender, routedEventArgs E)  
  88.     {  
  89.         try 
  90.         {  
  91.             Application.Current.Install();  
  92.         }  
  93.         catch (InvalidoperationException)  
  94.         {  
  95.             messageBox.Show("应用已经安装.");  
  96.         }  
  97.         catch (Exception)  
  98.         {  
  99.             this.Txt_Status.Text = "安装失败";  
  100.         }  
  101.  
  102.     }  
  103. }  

 

�行�果

Silverlight 客�端桌面模式(OOB 模式)

Silverlight 客�端桌面模式(OOB 模式)

重新��程序

Silverlight 客�端桌面模式(OOB 模式)

�果版本就一�了,如果�是后再��更新就�出�下�:

Silverlight 客�端桌面模式(OOB 模式)

好了�在安�到更新都有了我��要�用�想一下,如果用�的���有�接��的情�或者使用中��桌面模式�取服�信息�候就�出�����用�就��得你的程序也太差了吧!

解�方法:就是�程序去�查是否有��存在;

                         我�可以使用 NetworkInterface.GetIsNetworkAvailable() 方法�取是否在������;

�然我�也要���控��的事件 NetworkChange.NetworkAddressChanged ��程序作出更好的用���。

��代�:

                     首先添加�查��的方法

 
 
  1. //�查����  
  2. private void checkNetworkStatus()  
  3. {  
  4.     if (NetworkInterface.GetIsNetworkAvailable() == true)  
  5.     {  
  6.         this.Txt_NetState.Text = "�前���於�接��";  
  7.     }  
  8.     else 
  9.     {  
  10.         this.Txt_NetState.Text = "�前���於����";  
  11.     }  

 

          在�造方法增加

 

 
 
  1. this.checkNetworkStatus();  
  2. NetworkChange.NetworkAddressChanged += NetworkChange_NetworkAddressChanged; 

 

 �行查看�果

 

Silverlight 客�端桌面模式(OOB 模式)

 

本篇教程完�! ���者!

大家可以去下�示例代�。

大佬总结

以上是大佬教程为你收集整理的Silverlight 客�端桌面模式(OOB 模式)全部内容,希望文章能够帮你解决Silverlight 客�端桌面模式(OOB 模式)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。