我有一个内置Silverlight的Windows Phone 7应用程序。此应用程序使用应用程序栏。如果已购买应用程序,我想隐藏应用程序栏中的一个按钮。但是,我注意到ApplicationIconButton类没有公开“Visibility”属性。与此同时,我没有看到在运行时动态填充应用程序栏的方法。
有人可以对此提供一些见解吗?这可能吗?如果是这样,怎么样?
谢谢!
答案 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按钮上显示的图标的相对路径。您可以根据自己的情况调整此代码。
基本上,不是设置按钮可见或不显示,您必须删除按钮(如果它在那里)或重新添加按钮(如果不存在)。