如何获取 Windows Phone 应用程序栏中的按钮数

How to get number of buttons in an Windows Phone application bar

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

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

 using System.Linq;

 ...

 if(parent.ApplicationBar.Buttons.Count() > 1)
      parent.ApplicationBar.Buttons.RemoveAt(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 存储在临时变量中不是强制性的,我这样做只是为了提高可读性)