WPF:設定程式工作列表徵圖顏色提示

來源:互聯網
上載者:User

如上,這兩種顏色提示,第一種(左邊的)是進度條提示,在檔案操作中,下載軟體或者播放器程式表徵圖中都有。它的長度可以是一定值的也可以是那種不斷滑動的代表不確定進度。同時顏色的不同也代表不同的狀態,正常狀態是綠色,暫停狀態是黃色,錯誤狀態是紅色。

 

第二種顏色則是不停地閃爍,在即時通訊軟體中很常見。

 

先說第二種,原理就是使用Win32的FlashWindowEx API,我們可以使用一個WPF的擴充方法封轉(參考:這裡),這樣一切都非常簡單,調用Window的擴充方法FlashWindow就可以了(還可以傳遞一個參數,代表要閃多少次,預設是UInt32的最大值)。

 

至於第一種,先想到的是用微軟的Windows API Code Pack類庫,注意這個特性是Windows 7或其之後的Windows系統才有的,所以執行前最好判斷一下作業系統版本。

在Windows API Code Pack中的命名空間:MS.WindowsAPICodePack.Internal有一個CoreHelpers類型可以判斷當前Windows系統版本並拋出異常:

 

或者手動判斷(Windows 7的版本號碼是6.1):

var os = Environment.OSVersion;

if (os.Platform == PlatformID.Win32NT && os.Version.CompareTo(new Version(6, 1)) >= 0)

{

    //>= Windows 7

}

else

{

    //不具備Windows 7的功能

}

 

接下來就是主代碼了,引用Microsoft.WindowsAPICodePack.Shell.dll加入Microsoft.WindowsAPICodePack.Taskbar命名空間,通過TaskManager的Instance擷取TaskManager執行個體,然後調用SetProgressValue和SetProgressState設定進度值和進度類型就OK了。比如:

//+ using Microsoft.WindowsAPICodePack.Taskbar;

 

//三分之二長度

TaskbarManager.Instance.SetProgressValue(2, 3);

//紅色

TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Error);

 

結果:

 

設定不確定進度:

TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Indeterminate);

 

結果:

 

有一個好訊息就是WPF 4後,這些已經被整合到.NET Framework中了,在System.Windows.Shell命名空間內,程式集是PresentationFramework(所有WPF程式都會預設載入的)。所以完全不需要Windows API Code Pack,加入System.Windows.Shell命名空間後,使用下面代碼:

//+ using System.Windows.Shell (WPF 4+);

 

var taskbarinfo = new TaskbarItemInfo();

//0 ~ 1.0 是進度值

taskbarinfo.ProgressValue = 1.0 / 3 * 2;

taskbarinfo.ProgressState = TaskbarItemProgressState.Error;

 

//通過Window類型的TaskbarItemInfo屬性設定TaskbarItemInfo對象

this.TaskbarItemInfo = taskbarinfo;

 

結果:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.