Windows phone 7 WP7应用程序Baricon可见性

Windows phone 7 WP7应用程序Baricon可见性,windows-phone-7,icons,visibility,Windows Phone 7,Icons,Visibility,请注意,WP7 ApplicationBarIcon本身不是标准控件 我需要能够以编程方式隐藏此内容(我需要隐藏而不是禁用) 1/除了添加/删除图标,我还有其他方法可以做到这一点吗 2/假设我必须添加和删除它,我如何将事件关联到我正在添加的控件 谢谢 1)ApplicationBarIcons不支持某种可见性属性。你唯一能做的就是删除并添加它们。另一个解决方案是禁用它们,因为这会导致更一致的UI。在显示4个图标并删除其中2个的情况下,图标已重新对齐,图标现在位于其他按钮所在的位置。这可能会让用

请注意,WP7 ApplicationBarIcon本身不是标准控件

我需要能够以编程方式隐藏此内容(我需要隐藏而不是禁用)

1/除了添加/删除图标,我还有其他方法可以做到这一点吗

2/假设我必须添加和删除它,我如何将事件关联到我正在添加的控件

  • 谢谢
    • 1)ApplicationBarIcons不支持某种可见性属性。你唯一能做的就是删除并添加它们。另一个解决方案是禁用它们,因为这会导致更一致的UI。在显示4个图标并删除其中2个的情况下,图标已重新对齐,图标现在位于其他按钮所在的位置。这可能会让用户感到困惑,因为他习惯于单击右侧的第二个按钮,该按钮现在执行不同的操作

      2) 当我不得不处理这个问题时,我创建了一个管理类,其中包含了我需要的所有图标。删除图标时,我只是将其从应用程序栏中删除,但将其保留在我的类中。稍后,我可以使用与以前完全相同的实例将图标添加回ApplicationBar,并将所有现有事件附加到该图标上

      与良好的总体框架相比,WindowsPhone7上的ApplicationBar是一个让我失望的东西


      希望这有助于…

      以下显示:在代码中创建appbar;向其添加按钮(包括“单击”事件处理程序);以及移除特定按钮

          this.ApplicationBar = new ApplicationBar();
      
          var newButton = new ApplicationBarIconButton();
          newButton.IconUri = new Uri("/images/remove.png", UriKind.Relative);
          newButton.Text = "remove";
          newButton.Click += RemoveAppBarButton;
      
          this.ApplicationBar.Buttons.Add(newButton);
      
      
      void RemoveAppBarButton(object sender, EventArgs e)
      {
          for (var i = 0; i < this.ApplicationBar.Buttons.Count; i++)
          {
              var button = this.ApplicationBar.Buttons[i] as ApplicationBarIconButton;
      
              if (button != null)
              {
                  if (button.Text == "remove")
                  {
                      this.ApplicationBar.Buttons.RemoveAt(i);
                      break;
                  }
              }
          }
      }
      
      this.ApplicationBar=new ApplicationBar();
      var newButton=newapplicationbariconbutton();
      newButton.IconUri=newURI(“/images/remove.png”,UriKind.Relative);
      newButton.Text=“删除”;
      newButton.Click+=RemoveAppBarButton;
      这个.ApplicationBar.Buttons.Add(newButton);
      void RemoveAppBarButton(对象发送方,事件参数e)
      {
      对于(var i=0;i

      需要注意的重要一点是,不能按名称引用按钮(或菜单项)。

      我猜wp7附带的电子邮件应用程序就是这样工作的?我想知道当点击“多选”按钮时他们是如何更改应用程序栏的。很抱歉再次继续。。。如果我想,我可以用xaml定义ApplicationBar,然后在特殊情况下添加一个新按钮(如果需要的话)?@Luke电子邮件应用程序不是用Silverlight编写的,但可能也有类似的功能。是的,您可以在XAML中定义它并在代码中引用它,但不能通过名称引用appbar的内容。