【问题标题】:How to get number of buttons in an Windows Phone application bar如何获取 Windows Phone 应用程序栏中的按钮数量
【发布时间】:2015-07-02 19:55:21
【问题描述】:

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

【问题讨论】:

    标签: c# silverlight windows-phone-8.1 application-bar


    【解决方案1】:

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

     using System.Linq;
    
     ...
    
     if(parent.ApplicationBar.Buttons.Count() > 1)
          parent.ApplicationBar.Buttons.RemoveAt(1);
    

    【讨论】:

    • 'System.Collections.IList' 不包含 'Count' 的定义,并且没有扩展方法 'Count' 接受类型为 'System.Collections.IList' 的第一个参数可以找到 @KooKiz 答案对我来说是正确的
    • 正如我所说,您需要 Linq,将其添加到文件顶部 using System.Linq;
    【解决方案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 不是强制性的,我这样做只是为了提高可读性)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多