【问题标题】:How do i handle the event of a selected pivot item in Windows Phone我如何处理 Windows Phone 中选定数据透视项的事件
【发布时间】:2014-09-16 08:44:57
【问题描述】:

我有一个包含 3 个PivotItems 和一个ApplicationBar 的应用程序。 我想在选择PivotItems 2 和 3 时隐藏ApplicationBar,并在选择第一个PivotItem 时显示ApplicationBar

【问题讨论】:

    标签: c# windows-phone-8 application-bar pivotitem


    【解决方案1】:

    我不知道为什么这个问题被否决了。问题意义可能是错误的,它可以被编辑。我为您找到了解决方案@user3847141。给你。

    PivotItem pivot = null;
        private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ApplicationBar appBar = new ApplicationBar();
            ApplicationBarIconButton appBarIconButton = new ApplicationBarIconButton();
            pivot = (PivotItem)(sender as Pivot).SelectedItem;
            switch(pivot.Header.ToString())
            {
                case "item1": 
                    appBar.Mode = ApplicationBarMode.Default;
                    appBarIconButton.IconUri = new Uri("/appbar.close.png", UriKind.RelativeOrAbsolute);
                    appBarIconButton.Text = "Close";
                    appBar.Buttons.Add(appBarIconButton);
                    this.ApplicationBar = appBar;
                    break;
                case "item2":
                    appBar.Mode = ApplicationBarMode.Minimized; // To minimize AppBar
                    appBar = null; // Delete Application Bar                     
                    this.ApplicationBar = appBar;
                    break;
                case "item3":
                    appBar.Mode = ApplicationBarMode.Minimized;
                    appBar = null;                   
                    this.ApplicationBar = appBar;
                    break;
            }
        }
    

    您可以通过 Pivot 中的 Selection_Changed 事件来实现这一点。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      首先为您的数据透视项目命名,然后您需要创建一个 PivotCallbacks 类

      class PivotCallbacks
      {
           public Action Initiate { get; set; }
           public Action OnAvtivated { get; set; }
           public Action<CancelEventArgs> OnBackKeyPress { get; set; }
      }
      

      然后在您的页面构造函数中添加以下内容。

      public MainPage()
      {
          InitializeComponent();
      
          _callbacks = new Dictionary<object, PivotCallbacks>();
          _callbacks[pivotItem1] = new PivotCallbacks
          {
              Initiate = ShowAppbar,
              OnAvtivated = ShowAppbar
      
          };
          _callbacks[pivotItem2] = new PivotCallbacks
          {
              OnAvtivated = HideAppbar
          };
          _callbacks[pivotItem3] = new PivotCallbacks
          {
              OnAvtivated = HideAppbar
          };
      
          foreach (var callbacks in _callbacks.Values)
          {
              if (callbacks.Initiate != null)
              {
                  callbacks.Initiate();
              }
          }
      }
      

      (这里 ShowAppbar 和 HideAppbar 是具有显示/隐藏应用栏逻辑的方法)

      然后,当当前枢轴项目中的选择发生更改时,您需要调用附加到它的适当函数。要在枢轴项的选择更改事件中执行此操作,请添加以下代码。

      private void pivotItemMomento_SelectionChanged(object sender, SelectionChangedEventArgs e)
      {
      
          PivotCallbacks callbacks;
          if (_callbacks.TryGetValue(momentoPivot.SelectedItem, out callbacks) && (callbacks.OnAvtivated != null))
          {
                 callbacks.OnAvtivated();
          }
      }
      

      因此,当调用 onActivated 时,与该 Action 关联的方法会在相应的数据透视项中调用。您也可以对其他操作(例如 OnBackKeyPress)执行相同操作。希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多