Windows Phone 7 Disable Application Bar button – 如何Enable/Disable WP7的Application Bar Icon

Windows Phone中為了能夠令到應用程式更簡潔..
很多時候都盡量減少使用按鈕..
而使用ApplicationBarIconButtonApplicationBarContextMenu等等
我現在正在寫的程式也是一樣…
原來ApplicationBarIconButtonButton 的處理方法是有點不一樣的

由於程式上有一些功能需要連接到Web Service上..
所以會有小小的Delay..
如果不把ApplicationBarIconButton Disable的話..
便用者在等待期間.. 如果心急的話..可能會再次按這個ApplicationBarIconButton的按鈕..
所以便要找放法去Disable這個按鈕了…

一般來說…因為ApplicationBarIconButton 是一個Button..
而他又有一個IsEnable的屬性…
所以直角給我說: 只要用直接輸入這個ApplicationBarIconButton的名稱..
之後使用IsEnable的屬性便可以很簡單地 EnableDisable這個ApplicationBarIconButton

AppBarGetData.IsEnabled=false;

誰不知..當我在執行程式的時候..出現了以下的錯誤信息..
NullReferenceException
NullReferenceException

做了一會兒Research之後…找到了解決方法了.

解決方法:
原來要參考ApplicationBarIconButton 是需要用來 ApplicationBar.Buttons[] 這個屬性的
其中我們要在Button[]中輸入我們想參考的ApplicationBarIconButton位置/Index
是由ApplicationBar上的左至右排列的
ApplicationBar最左邊的ApplicationBarIconButtonIndex/位置是 “0”…
我們可以以這個方法..找出ApplicationBarIconButton的參考..之後修改他的屬性
E.G.

//或出這個ApplicationBarIconButton 之後Assign他到其中一個Variable備用
ApplicationBarIconButton AppBarButton1 = (ApplicationBarIconButton)ApplicationBar.Buttons[0];
//設定這個ApplicationBarIconButton的屬性
            AppBarButton1.IsEnabled = IsEnable;
            //另一個做法是直接Cast這個成ApplicationBarIconButton/ApplicationBarMenuButton
            ((ApplicationBarIconButton)ApplicationBar.Buttons[1]).IsEnabled = IsEnable;

Hope you find it useful

Leave a Reply