3

我有一个 3 PivotItems 和一个ApplicationBar. 我想隐藏ApplicationBar选择PivotItems 2 和 3 的时间,并显示选择ApplicationBar第一个PivotItem的时间。

4

2 回答 2

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 事件来实现这一点。希望能帮助到你。

于 2014-07-24T18:15:33.423 回答
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 是具有显示/隐藏应用栏逻辑的方法)

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

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)执行相同操作。希望这可以帮助。

于 2014-07-24T17:20:11.237 回答