2010-11-20 39 views
13

Tôi có ứng dụng Windows Phone 7 được cài sẵn trong Silverlight. Ứng dụng này sử dụng thanh ứng dụng. Nếu đã mua ứng dụng, tôi muốn ẩn một trong các nút trong thanh ứng dụng. Tuy nhiên, tôi đã nhận thấy rằng lớp ApplicationIconButton không phơi bày một thuộc tính "Visibility". Đồng thời, tôi không thấy cách tự động điền thanh ứng dụng vào thời gian chạy.Ẩn Biểu tượng Thanh Ứng dụng Lập trình trong Ứng dụng Silverlight WP7?

Ai có thể cung cấp một số thông tin chi tiết về điều này không? Điều này có thể không? Nếu vậy, làm thế nào?

Cảm ơn!

Trả lời

32

Nút thanh ứng dụng hoạt động theo cách dựa trên chỉ mục chứ không phải dựa trên đối tượng như bạn mong đợi. Do đó, bạn cần phải chỉ định một chỉ mục nút bất cứ khi nào bạn muốn thực hiện một hành động cụ thể trên nó (ví dụ: vô hiệu hóa).

Ví dụ:

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

này đang được nói, bạn có thể tạo các trường hợp ApplicationBarIconButton mới và vượt qua chúng để ApplicationBar:

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); 
} 

Khi tháo nút, bạn chỉ có thể sử dụng RemoveAt, cho rằng bạn biết chỉ mục của nút cần xóa:

ApplicationBar.Buttons.RemoveAt(0); 
13

tôi sử dụng phương pháp sau đây để thay đổi các nút thanh ứng dụng trong mã của tôi:

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); 
    } 
} 

Các uriString là con đường tương đối so với biểu tượng mà tôi muốn hiển thị vào nút ứng dụng. Bạn có thể thích ứng với mã này cho các kịch bản của riêng bạn.

Về cơ bản, thay vì đặt nút có thể nhìn thấy hay không, bạn phải xóa nút (nếu có) hoặc thêm lại nút nếu không.

+0

Tôi cần phải cung cấp cho IconUri cho Appl icationBarIconButton dưới dạng url http. Điều này có thể không? Tôi nhận được ngoại lệ dưới đây. "Đường dẫn không thể tuyệt đối". – Sujiz

+0

Hi Sujiz, Bạn đã đặt tham số UriKind là tuyệt đối chưa? Mặc dù tôi không thực sự biết liệu địa chỉ HTTP có hoạt động hay không, nhưng nó rất đáng để thử. –

+0

tôi đã đặt UriKind thành tuyệt đối nhưng nó không hoạt động đối với tôi. Có giải pháp nào khác để tải biểu tượng thanh ứng dụng từ url http không? – Sujiz

Các vấn đề liên quan