我有一个包含3个PivotItem
和ApplicationBar
的应用。
我想在选择ApplicationBar
s 2和3时隐藏PivotItem
,并在选择第一个ApplicationBar
时显示PivotItem
。
答案 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)执行相同操作。希望这会有所帮助。