[VS2010 Online]Silverlight 4.0 New Feature - NotificationWindow

[VS2010 Online]Silverlight 4.0 New Feature - NotificationWindow

在 Silverlight 4.0 提供了一個新的功能 – NotificationWindow,這個新功能就像在 Outlook

收到新信時,會彈出一個視窗提醒你收到信一樣。這個功能目前只能在 Out-Of-Browser(OOB)使用。

 


我們利用這個功能來設計一個可以提醒自己已經工作多久的小工具。

1.

首先,在 Xaml 程式碼中放置一個 Button 按鈕。

image

 

2.

寫入下列程式碼:

   1: public partial class MainPage : UserControl
   2:    {
   3:        private DispatcherTimer timer;
   4:        private bool isTicking = false;
   5:  
   6:        public MainPage()
   7:        {
   8:            InitializeComponent();
   9:            this.uxBtn.Click += new RoutedEventHandler(uxBtn_Click);
  10:        }
  11:  
  12:        void uxBtn_Click(object sender, RoutedEventArgs e)
  13:        {
  14:            if (!isTicking)
  15:            {
  16:                timer = new DispatcherTimer();
  17:                timer.Interval = TimeSpan.FromMinutes(50);
  18:                timer.Tick += new EventHandler(timer_Tick);
  19:                timer.Start();
  20:            }
  21:            else
  22:            {
  23:                timer.Stop();
  24:            }
  25:            isTicking = !isTicking;
  26:        }
  27:  
  28:        void timer_Tick(object sender, EventArgs e)
  29:        {
  30:            
  31:            var txt = new TextBlock() { Text = "你已經工作50分鐘了,該休息一下囉!", FontSize = 32, Foreground=new SolidColorBrush(Color.FromArgb(255, 255, 0, 0))};
  32:  
  33:            if (Application.Current.IsRunningOutOfBrowser)
  34:            {
  35:                NotificationWindow w = new NotificationWindow();
  36:                w.Content = txt;
  37:                w.Show(2000);
  38:            }
  39:        }
  40:    }

 

 

這段程式碼透過 DispatcherTimer 去處理時間計時,預設每50分鐘會去觸發 timer_Tick 事件。

然後可以在 NotificationWindow 放置一個 TextBlock,裡面寫上要提醒自己要休息的字語。

然後由 Show()方法以及所包含的參數去決定顯示時間長短(百萬毫秒)。

 

 

 

3.

然後按下 F5 執行,並選擇安裝到電腦上:

image

 

按下OK。

image

 

 

4.

按下[啟動工作計時]按鈕

image

 

 

5.

當到達五十分鐘時,就會彈出提醒你該休息一下的視窗。如果已不需要提醒,可以直接關閉這個

Silverlight 應用程式。

image

 

 

這個 NotificationWindow 的用途實在很多,裡面也可以放置多種物件。

但是如果在這個視窗去切換全螢幕、按下HyperLink按鈕導向某個頁面、顯示

SaveFileDialog 以及 OpenfileDialog時,這個作為都不會產生作用。

 

 

 

你可以試看看去創造不一樣的用法。 Just Code For Fun!

 

 

 

參考資料:

1. http://msdn.microsoft.com/zh-tw/library/system.windows.threading.dispatchertimer(VS.95).aspx

2. http://msdn.microsoft.com/en-us/library/system.windows.notificationwindow(VS.96).aspx

3. http://msdn.microsoft.com/en-us/library/system.windows.notificationwindow(VS.96).aspx

 

 

 

如果您有微軟技術開發的問題,可以到MSDN Forum發問。

如果您有微軟IT管理的問題,可以到TechNet Forum發問喔。