成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Windows Phone 7程序等待頁面的處理

移動開發
程序啟動通常會有一個等待的過程,在這個過程中可以通過使用Popup控件配合BackgroundWorker類啟動后臺線程來實現。

程序啟動通常會有一個等待的過程,在這個過程中可以通過使用Popup控件配合BackgroundWorker類啟動后臺線程來實現。

控件的代碼

PopupSplash.xaml

  1. <UserControl x:Class="ProgressSplashScreen.PopupSplash" 
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  5.     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  6.     mc:Ignorable="d" 
  7.     FontFamily="{StaticResource PhoneFontFamilyNormal}" 
  8.     FontSize="{StaticResource PhoneFontSizeNormal}" 
  9.     Foreground="{StaticResource PhoneForegroundBrush}" 
  10.     d:DesignHeight="800" d:DesignWidth="480"> 
  11.       
  12.     <Grid x:Name="LayoutRoot" Background="White" Width="480" Height="800"> 
  13.         <ProgressBar HorizontalAlignment="Left" Margin="0,755,0,0" Name="progressBar1" Width="480" Background="DarkRed"   /> 
  14.         <Image Height="757" HorizontalAlignment="Left" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="480" Source="/ProgressSplashScreen;component/wuyuan.png" /> 
  15.         <TextBlock HorizontalAlignment="Left" Margin="171,656,0,97" Name="textBlock1" Text="Loading..." Width="208" Foreground="Black" FontSize="30" /> 
  16.     </Grid> 
  17. </UserControl> 

 

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Net;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Documents;  
  8. using System.Windows.Input;  
  9. using System.Windows.Media;  
  10. using System.Windows.Media.Animation;  
  11. using System.Windows.Shapes;  
  12.  
  13. namespace ProgressSplashScreen  
  14. {  
  15.     public partial class PopupSplash : UserControl  
  16.     {  
  17.         public PopupSplash()  
  18.         {  
  19.             InitializeComponent();  
  20.             this.progressBar1.IsIndeterminate = true;//指示進度條是使用重復模式報告一般進度  
  21.         }  
  22.     }  

MainPage.xaml.cs

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Net;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Documents;  
  8. using System.Windows.Input;  
  9. using System.Windows.Media;  
  10. using System.Windows.Media.Animation;  
  11. using System.Windows.Shapes;  
  12. using Microsoft.Phone.Controls;  
  13. using System.Windows.Controls.Primitives;  
  14. using System.ComponentModel;  
  15. using System.Threading;  
  16.  
  17. namespace ProgressSplashScreen  
  18. {  
  19.     public partial class MainPage : PhoneApplicationPage  
  20.     {  
  21.         private Popup popup;  
  22.         private BackgroundWorker backroungWorker;  
  23.         public MainPage()  
  24.         {  
  25.             InitializeComponent();  
  26.             ShowPopup();  
  27.         }  
  28.         private void ShowPopup()  
  29.         {  
  30.             this.popup = new Popup();  
  31.             this.popup.Child = new PopupSplash();//設置 Popup 控件的內容,把自定義的PopupSplash控件填充到popup控件上  
  32.             this.popup.IsOpen = true;  
  33.             StartLoadingData();//開始加載數據  
  34.         }  
  35.  
  36.         private void StartLoadingData()  
  37.         {  
  38.             //使用BackgroundWorker在單獨的線程上執行操作  
  39.             backroungWorker = new BackgroundWorker();  
  40.             //調用 RunWorkerAsync后臺操作時引發此事件,即后臺要處理的事情寫在這個事件里面  
  41.             backroungWorker.DoWork += new DoWorkEventHandler(backroungWorker_DoWork);  
  42.             //當后臺操作完成事件  
  43.             backroungWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backroungWorker_RunWorkerCompleted);  
  44.             //開始執行后臺操作  
  45.             backroungWorker.RunWorkerAsync();  
  46.         }  
  47.         //后臺操作完成  
  48.         void backroungWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)  
  49.         {  
  50.             this.Dispatcher.BeginInvoke(() => 
  51.                 {  
  52.                     this.popup.IsOpen = false;//關閉popup  注意要使用Dispatcher.BeginInvoke開跟UI通訊  
  53.                 }  
  54.             );  
  55.         }  
  56.         //后臺操作處理  
  57.         void backroungWorker_DoWork(object sender, DoWorkEventArgs e)  
  58.         {  
  59.             // 程序初始化處理   這里只是模擬了一下  
  60.             Thread.Sleep(7000);  
  61.         }  
  62.     }  

System.Windows.Controls.Primitives.Popup類

  1. <Popup> 
  2.   Child  
  3. </Popup> 

Popup控件可在單獨窗口中相對于屏幕上的元素或點顯示內容。當Popup可見時,IsOpen屬性設置為true。

Popup.Child屬性

內容模型:Child屬性是Popup控件的***內容屬性。一個 Popup 只能有一個 UIElement 作為子級,但該子級可以包含復雜的嵌入內容。例如,該子級可以是包含 Image、文本和其他類型控件的 StackPanel。 當將內容添加到 Popup 控件時,Popup 控件會成為該內容的邏輯父級。同樣,Popup 內容將被視為 Popup 的邏輯子級。不會將子內容添加到包含 Popup 控件的可視化樹中。但當 IsOpen 設置為 true 時,子內容將呈現在具有自身可視化樹的單獨的窗口中。

System.ComponentModel. BackgroundWorker類

BackgroundWorker 類允許您在單獨的專用線程上運行操作。耗時的操作(如下載和數據庫事務)在長時間運行時可能會導致用戶界面 (UI) 似乎處于停止響應狀態。如果您需要能進行響應的用戶界面,而且面臨與這類操作相關的長時間延遲,則可以使用 BackgroundWorker 類方便地解決問題。

若要在后臺執行耗時的操作,請創建一個 BackgroundWorker,偵聽那些報告操作進度并在操作完成時發出信號的事件。若要設置后臺操作,請為 DoWork 事件添加一個事件處理程序。在此事件處理程序中調用耗時的操作。若要啟動該操作,請調用 RunWorkerAsync。若要收到進度更新通知,請對 ProgressChanged 事件進行處理。若要在操作完成時收到通知,請對 RunWorkerCompleted 事件進行處理。

注意

您必須非常小心,確保在 DoWork 事件處理程序中不操作任何用戶界面對象。而應該通過 ProgressChanged 和 RunWorkerCompleted 事件與用戶界面進行通信。

BackgroundWorker 事件不跨 AppDomain 邊界進行封送處理。請不要使用 BackgroundWorker 組件在多個 AppDomain 中執行多線程操作。

如果后臺操作需要參數,請在調用 RunWorkerAsync 時給出參數。在 DoWork 事件處理程序內部,可以從 DoWorkEventArgs.Argument 屬性中提取該參數。

原文鏈接:http://www.cnblogs.com/linzheng/archive/2011/03/08/1977718.html

【編輯推薦】

  1. 愛奇藝Windows Phone 7改版項目總結
  2. Windows Phone開發人員七宗罪
  3. 如何為Windows Phone開發App之構思和概念篇
  4. 如何將Windows Phone應用移植到Windows 8平臺
  5. Windows Phone 7處理休眠和墓碑的恢復
責任編輯:王曉東 來源: 博客園
相關推薦

2010-11-03 15:10:04

SilverlightSilverlightWindows Pho

2012-06-07 09:33:13

Windows Pho

2011-03-21 09:05:40

IronRubyWindows Pho

2010-11-26 16:00:08

Windows Pho

2013-07-30 11:18:37

Windows PhoWindows Pho

2010-05-05 13:16:02

Windows PhoWindows CE

2010-12-01 09:01:31

獨立存儲Windows Pho

2010-08-30 14:53:11

微軟Windows Pho

2012-06-01 15:39:46

休眠狀態墓碑狀態

2011-06-08 09:43:15

Windows Pho

2010-10-25 14:07:55

Windows Pho

2012-08-16 10:35:50

Windows Pho

2010-12-01 13:40:13

樞軸控件Windows Pho

2010-07-21 14:56:21

Windows Pho

2011-06-07 11:35:38

Windows Pho

2010-08-05 15:26:19

Windows Pho

2010-12-14 18:48:49

微軟

2010-10-11 14:42:49

Windows Pho

2010-12-01 13:55:29

地圖插件Windows Pho

2010-11-09 09:43:22

UI設計Windows Pho
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区三区日本 | 一区二区国产精品 | 久久久久国产精品一区二区 | 天堂在线91 | 日韩第一夜| 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 激情小视频 | 欧美成人手机在线 | 亚洲欧洲综合av | 国产成人精品一区二区三区在线 | 成人综合久久 | 高清一区二区三区 | 好婷婷网| 国产亚洲区 | 少妇一区二区三区 | 永久av| 亚洲一区精品在线 | 91观看 | 亚洲国产精品福利 | 国产欧美一区二区精品久导航 | 久久久久九九九女人毛片 | 久久精品国产一区二区电影 | 一区二区三区精品在线视频 | 欧美一区二区三区在线观看 | 97久久国产| 久久久爽爽爽美女图片 | 成人在线不卡 | 国户精品久久久久久久久久久不卡 | 欧美一区二区小视频 | 中文字幕精品视频 | 色综合久久天天综合网 | 成人av网站在线观看 | 日韩中文久久 | 97视频在线观看免费 | 久久精品亚洲国产 | 久久久精品一区二区三区 | 欧美综合国产精品久久丁香 | 成人精品一区二区三区四区 | 国产日韩欧美在线观看 | 韩国久久精品 | 国产成人影院 |