使用C#列出列表中的项目

时间:2013-11-18 02:12:55

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

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

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表示发件人对象中与click事件中相同的三个项目。这三个项目从一页传递到另一页。

单击该按钮时,应该进入测验页面并加载第二个问题。

question中的sectorId项应代表要显示的当前问题。此项应在页面之间传递,以跟踪列表中的问题。排队问题清单。

如何执行此操作,将问题排在列表中,以便按顺序通过按钮单击显示一次?

问题列表定义为

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

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

1 个答案:

答案 0 :(得分:0)

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

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);
}