我在单击事件处理程序中使用此代码,该处理程序将返回列表中的第二个项目。
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; }
}
答案 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);
}