2010-09-15 227 views
5

我正在開發WP7應用程序,並且應用程序需要在給定請求狀態的情況下更改應用程序欄上按鈕的圖標。 我曾嘗試:在運行時更改應用程序欄按鈕圖標

if (App.Servers[index].ServerState == "Enabled") 
{ 
    DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.stop.rest.png"); 
} 

else 
{ 
    DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.transport.play.rest.png"); 
} 

這不會給我一個錯誤的代碼,但它不能編譯.... 任何提示做,這是讚賞:)

感謝

回答

11

ApplicationBar是一種特殊的控件,不像其他Silverlight控件(請參閱Peter Torr's post on the subject)。其中一個後果是,在XAML中爲應用欄按鈕提供的名稱會在代碼隱藏中生成始終爲空的字段。

我猜你的情況下,DetailsAppBar中的btnStart字段被設置爲null,因此試圖設置其IconUri屬性導致拋出NullReferenceException。

要訪問應用程序欄中的按鈕,您必須改爲通過按鈕列表中從零開始的索引來引用它。例如,下面的代碼返回在應用程序欄到第三個按鈕的引用:

button = (IApplicationBarIconButton)ApplicationBar.Buttons[2]; 
+0

是啊,我剛剛找到了竅門出:)謝謝 – 2010-09-15 21:08:46

8

想通了......

((ApplicationBarIconButton)ApplicationBar.Buttons[2]).IconUri = new Uri("/AppBar/appbar.stop.rest.png",UriKind.Relative); 

做:)

相關問題