我有一个 3 PivotItem
s 和一个ApplicationBar
. 我想隐藏ApplicationBar
选择PivotItem
s 2 和 3 的时间,并显示选择ApplicationBar
第一个PivotItem
的时间。
问问题
3144 次
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 回答