2010-11-20 69 views
13

我有一個在Silverlight中構建的Windows Phone 7應用程序。此應用程序使用應用程序欄。如果已經購買了應用程序,我想隱藏應用程序欄中的其中一個按鈕。但是,我注意到ApplicationIconButton類不公開「可見性」屬性。同時,我沒有看到在運行時動態填充應用程序欄的方法。以編程方式在WP7 Silverlight應用程序中隱藏應用程序欄圖標?

任何人都可以提供一些見解嗎?這可能嗎?如果是這樣,怎麼樣?

謝謝!

回答

32

應用程序欄按鈕以基於索引的方式工作,而不像您期望的那樣基於對象。因此,只要您想對其執行特定操作(例如禁用),就需要指定一個按鈕索引。

例如:

ApplicationBarIconButton b = (ApplicationBarIconButton)ApplicationBar.Buttons[0]; 
b.IsEnabled = false; 

這是說,你可以創建新的ApplicationBarIconButton實例,並將它們傳遞給應用程序任務欄:

for (int i = 0; i < 2; i++) 
{ 
    ApplicationBarIconButton b = new ApplicationBarIconButton(); 
    b.Text = i.ToString(); 
    b.IconUri = new Uri("/Images/icon1.png", UriKind.Relative); 
    ApplicationBar.Buttons.Add(b); 
} 

當刪除按鈕,你可以簡單地使用RemoveAt移除,因爲你知道要刪除的按鈕的索引:

ApplicationBar.Buttons.RemoveAt(0); 
13

我使用下面的方法來改變在我的代碼應用程序欄按鈕:

private void UpdateAppbarButton(int index, string uriString, string text, bool visibility, EventHandler handler) 
{ 
    ApplicationBarIconButton button1 = null; 

    if (ApplicationBar.Buttons.Count > index) 
    { 
     button1 = ApplicationBar.Buttons[index] as ApplicationBarIconButton; 
    } 

    if (button1 != null) 
    { 
     { 
      ApplicationBar.Buttons.Remove(button1); 
     } 
    } 
    if (visibility == true) 
    { 
     button1 = new ApplicationBarIconButton(new Uri(uriString, UriKind.Relative)); 
     button1.Text = text; 
     button1.Click += handler; 
     ApplicationBar.Buttons.Insert(index, button1); 
    } 
} 

的uriString中是,我希望顯示上的應用程序按鈕的圖標的相對路徑。您可能可以根據自己的情況調整此代碼。

本質上,不是設置按鈕是否可見,您必須刪除按鈕(如果有的話)或重新添加它,如果它不是。

+0

我需要給IconUri for Appl icationBarIconButton作爲http url。這可能嗎?我收到以下例外。 「路徑不能是絕對的」。 – Sujiz 2012-12-23 18:08:36

+0

嗨Sujiz,您是否將UriKind參數設置爲絕對?雖然我實際上並不知道HTTP地址是否可以工作,但值得一試。 – 2012-12-27 14:13:37

+0

我已將UriKind設置爲絕對,但它不適用於me.is有任何其他解決方案來從http url加載應用程序欄圖標? – Sujiz 2012-12-28 04:15:41

相關問題