0

我的 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 处的按钮。但是我该怎么做呢?

4

2 回答 2

2

首先,您不需要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在临时变量中不是强制性的,我这样做只是为了提高可读性)

于 2015-04-24T09:31:43.267 回答
0

首先检查按钮的数量,你需要 Linq:

 using System.Linq;

 ...

 if(parent.ApplicationBar.Buttons.Count() > 1)
      parent.ApplicationBar.Buttons.RemoveAt(1);
于 2015-04-24T09:27:40.610 回答