如何处理Windows Phone中所选枢轴项的事件

时间:2014-07-24 16:58:23

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

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

2 个答案:

答案 0 :(得分:5)

我不知道为什么这个问题被投了票。问题意义可能是错误的,可以编辑。我为你找到了解决方案@ 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事件来实现此目的。希望它有所帮助。

答案 1 :(得分:1)

首先为您的透视项目命名,然后您需要创建一个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是具有显示/隐藏应用栏的逻辑的方法)

然后,当在当前枢轴项目中更改选择时,您需要调用附加到它的相应功能。要在pivot项的Selection changed事件中执行此操作,请添加以下代码。

private void pivotItemMomento_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

    PivotCallbacks callbacks;
    if (_callbacks.TryGetValue(momentoPivot.SelectedItem, out callbacks) && (callbacks.OnAvtivated != null))
    {
           callbacks.OnAvtivated();
    }
}

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