2010-11-20 2 views
13

Silverlight로 작성된 Windows Phone 7 응용 프로그램이 있습니다. 이 응용 프로그램은 응용 프로그램 막대를 사용합니다. 해당 응용 프로그램을 구입 한 경우 응용 프로그램 막대에있는 단추 중 하나를 숨기려고합니다. 그러나 ApplicationIconButton 클래스가 "Visibility"속성을 노출하지 않는 것으로 나타났습니다. 동시에 런타임시 응용 프로그램 표시 줄을 동적으로 채울 방법을 찾지 못했습니다.WP7 Silverlight 응용 프로그램에서 응용 프로그램 막대 아이콘을 프로그래밍 방식으로 숨기시겠습니까?

누구든지 이에 대한 통찰력을 제공 할 수 있습니까? 이것이 가능한가? 그렇다면 어떻게?

감사합니다.

답변

32

응용 프로그램 막대 단추는 예상 한 것처럼 개체 기반이 아닌 인덱스 기반 방식으로 작동합니다. 따라서 특정 작업 (예 : 사용 안 함)을 수행 할 때마다 단추 인덱스를 지정해야합니다. 이것은 말했다되고

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

, 새로운 ApplicationBarIconButton 인스턴스를 생성하고 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); 
} 

, 당신은 단순히 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를 Appl icBarIconButton을 http url로 사용하십시오. 이것이 가능한가? 나는 아래 예외를 얻고있다. "경로는 절대적 일 수 없습니다". – Sujiz

+0

Hi Sujiz, UriKind 매개 변수를 절대로 설정 했습니까? HTTP 주소가 작동하는지 여부는 실제로 알지 못하지만 빠른 시일 내에 시험해 볼 가치가 있습니다. –

+0

나는 UriKind를 절대적으로 설정했지만 그것은 me.is에서 작동하지 않았다. http url에서 응용 프로그램 막대 아이콘을로드하는 다른 솔루션이 있습니까? – Sujiz

관련 문제