在WP7 Silverlight应用程序中以编程方式隐藏应用程序栏图标?

时间:2010-11-20 18:10:42

标签: silverlight windows-phone-7

我有一个内置Silverlight的Windows Phone 7应用程序。此应用程序使用应用程序栏。如果已购买应用程序,我想隐藏应用程序栏中的一个按钮。但是,我注意到ApplicationIconButton类没有公开“Visibility”属性。与此同时,我没有看到在运行时动态填充应用程序栏的方法。

有人可以对此提供一些见解吗?这可能吗?如果是这样,怎么样?

谢谢!

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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是我希望在app按钮上显示的图标的相对路径。您可以根据自己的情况调整此代码。

基本上,不是设置按钮可见或不显示,您必须删除按钮(如果它在那里)或重新添加按钮(如果不存在)。