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

use*_*662 13 silverlight windows-phone-7

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

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

谢谢!

Den*_*sky 32

应用程序栏按钮以基于索引的方式工作,而不是像您期望的那样基于对象.因此,只要您想对其执行特定操作(例如禁用),就需要指定按钮索引.

例如:

ApplicationBarIconButton b = (ApplicationBarIconButton)ApplicationBar.Buttons[0];
b.IsEnabled = false;
Run Code Online (Sandbox Code Playgroud)

这就是说,您可以创建新的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);
}
Run Code Online (Sandbox Code Playgroud)

删除按钮时,您可以简单地使用RemoveAt,因为您知道要删除的按钮的索引:

ApplicationBar.Buttons.RemoveAt(0);
Run Code Online (Sandbox Code Playgroud)


Dr *_*bie 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

uriString是我希望在app按钮上显示的图标的相对路径.您可以根据自己的方案调整此代码.

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