Windows手机禁用应用程序栏按钮

时间:2012-10-05 14:41:47

标签: c# silverlight windows-phone-7 application-bar

那么,我的问题是什么?我有popup,当我打开它时,我想在我的Windows手机应用程序中禁用当前页面。所以我做了这个this.IsEnabled = false;但我的ApplicationBar仍然可用。我当然试着用:

ApplicationBar.IsMenuEnabled = false;

我的下一个想法是做这样的事情:

for (int i = 0; i < ApplicationBar.MenuItems.Count; i++)
{
    ((ApplicationBarMenuItem)ApplicationBar.Buttons[i]).IsEnabled = false;
}

仍然没有结果。我确信之前已经完成了一些,你能告诉我怎么做吗?

5 个答案:

答案 0 :(得分:14)

应用程序栏由Buttons集合和MenuItems集合组成。对于你的例子,你会想尝试类似

的东西
foreach (var button in ApplicationBar.Buttons)
{
    ((ApplicationBarIconButton) button).IsEnabled = false; // disables the button
}

ApplicationBar.IsMenuEnabled = false; // this will prevent menu from opening

如果这不起作用,您是否考虑过隐藏App栏? ApplicationBar.IsVisible = false;

答案 1 :(得分:3)

这个怎么样

((ApplicationBarIconButton)this.ApplicationBar.Buttons[1]).IsEnabled = true;

其中[1]是您要启用/禁用的按钮的索引

我知道一个事实,因为我有在Windows Phone 8应用程序中使用它的代码

您可以发布一些代码供我们查看

答案 2 :(得分:2)

不幸的是,根据this post,有一个错误意味着在菜单关闭并重新打开之前,设置IsEnabled的{​​{1}}属性不会受到尊重。

答案 3 :(得分:0)

只需包含使用Microsoft.Phone.Shell来获取.cs文件中的命名空间,您就可以执行以下操作:

ApplicationBar.Enable();

ApplicationBar.Disable();

根据http://new.efficientcoder.net/2010/10/windows-phone-7-quick-tip-17.html

答案 4 :(得分:0)

试试这个:

XAML:

<shell:ApplicationBar IsVisible="False">

的.cs

Dispatcher.BeginInvoke(() =>
            {
                UIHelper.ToggleVisibility(Canvas_LocationAR_Trans);
                UIHelper.ToggleVisibility(Grid_LocARLoadingGrid);
                **ApplicationBar.IsVisible = true;**
            });