我的Windows Phone 8.1 Silverlight应用程序中有一个应用程序栏。它包含一个ApplicationBarButton
当用户滚动到LongListSelector
中的某个点时,另一个按钮将添加到ApplicationBar
中,如下所示:
for (int i = 0; i < 1; i++)
{
ApplicationBarIconButton scrollToToday = new ApplicationBarIconButton();
scrollToToday.Text = "idag";
scrollToToday.IconUri = new Uri("/Assets/AppBar/today_dark.png", UriKind.Relative);
parent.ApplicationBar.Buttons.Add(scrollToToday);
}
当用户滚动回原始点起点时,我将其删除:
parent.ApplicationBar.Buttons.RemoveAt(1);
但是,当应用启动时,当应用到达该代码行时,应用会崩溃,因为应用在原始起点启动,然后没有第二个按钮要删除。我认为这与我首先必须检查ApplicationBar
是否包含多个按钮有关,则可以删除索引 1 处的按钮。但是我该怎么做呢?
首先,您不需要for
循环来添加按钮,因为您只添加一个:
ApplicationBarIconButton scrollToToday = new ApplicationBarIconButton();
scrollToToday.Text = "idag";
scrollToToday.IconUri = new Uri("/Assets/AppBar/today_dark.png", UriKind.Relative);
parent.ApplicationBar.Buttons.Add(scrollToToday);
然后,如果我理解正确,如果有多个按钮,您要删除最后一个按钮。如果是这样,您可以使用以下代码:
var count = parent.ApplicationBar.Buttons.Count;
if (count >= 2)
{
parent.ApplicationBar.Buttons.RemoveAt(count - 1);
}
(将count
存储在临时变量中不是强制性的,我这样做只是为了提高可读性)
首先检查按钮的数量,你需要 Linq:
using System.Linq;
...
if(parent.ApplicationBar.Buttons.Count() > 1)
parent.ApplicationBar.Buttons.RemoveAt(1);