【问题标题】:Queue items in list with C#使用 C# 在列表中排队项目
【发布时间】:2013-11-18 02:12:55
【问题描述】:

我在单击事件处理程序中使用此代码,它将返回列表中的第二个项目。

private void nextbtn_Click(object sender, RoutedEventArgs e)
{
    var sectorId = new QuizArgs
    {
        sector = "Food Production",

        question = 2,
        Total = 0
    };

    this.Frame.Navigate(typeof(Quiz), sectorId);
}

测验页面显示一个问题。列表中有 5 个问题,必须一次显示一个。

因此,当第一个问题加载到测验页面中并单击nextbtn 时,它应该重新加载包含列表中第二个问题的测验页面,依此类推,直到最后一个问题。

使用此代码加载测验页面

protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{    
     QuizArgs args = navigationParameter as QuizArgs;
     var SectorGroups = QuizDataSource.GetGroups(args.sector);
     this.DefaultViewModel["Groups"] = SectorGroups;
}

Object navigationParameter 表示发送者对象中与单击事件中相同的三个项目。这三个项目在页面之间传递。

当按钮被点击时,它应该会进入测验页面并加载第二个问题。

sectorId 中的 question 项应该代表当前要显示的问题。此项应逐页传递以跟踪列表中的问题。排队问题列表。

如何做到这一点,将列表中的问题排成队列,以便通过按钮单击按顺序依次显示它们一次?

问题列表定义为

private ObservableCollection<QuizGroups> _allQuizGroups = new ObservableCollection<QuizGroups>();

public ObservableCollection<QuizGroups> AllQuizGroups
{
    get { return this._allQuizGroups; }
}

【问题讨论】:

  • 你使用的是队列集合类型吗?还是它们出现的顺序无关紧要?
  • 不,我没有使用队列集合类型。订单是根据id。第一个问题1,点击下一个按钮时,显示问题2,下一个按钮然后显示问题3等。
  • 已更新,希望对您有所帮助:)

标签: c# visual-studio-2012 windows-8 indexing queue


【解决方案1】:

当您加载第一个问题时,我个人会设置一个属性并将其设置在您的 OnClick 上。然后,您可以从列表中调用下一个问题,如下所示。 如果您从其他方法加载问题零,请将 CurrentQuestionEnumerator 设置为零并使用以下方法。

private int CurrentQuestionEnumerator { get; set; }

public ObservableCollection<QuizGroups>  AllQuestions { get; set; }

private void nextbtn_Click(object sender, RoutedEventArgs e)
{
    var sectorId = new QuizArgs
    {
        sector = "Food Production",
        question = AllQuestions[CurrentQuestionEnumerator++],
        Total = 0
    };
    this.Frame.Navigate(typeof(Quiz), sectorId);
}

【讨论】:

  • 请查看对问题的编辑以及一些附加代码。 QuestionList 会是我的问题QuizGroups 吗?
  • @user1684586 quizgroups 是问题的集合吗?还是收藏的集合?这个名字暗示了一个集合的集合..
  • 是一个集合问题,每个问题都有一个答案集合。这有帮助吗?
  • 那么是的,QuestionList 将是测验组。但是,您应该考虑更改名称,因为它意味着一组组。
  • 谢谢,我现在正在尝试这个,但是使用索引是否可能/更好?
猜你喜欢
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
相关资源
最近更新 更多