我正在尝试根据用户是否点击“前进”按钮或“后退”按钮来设置算法代码以设置当前对象。
public Step CurrentStep
{
get { return _currentStep; }
set
{
if (_currentStep != value)
{
_currentStep = value;
OnPropertyChanged("CurrentStep");
}
}
}
private int CurrentStepIndex { get; set; }
private void NextStep()
{
CurrentStepIndex++;
GotoStep();
}
private void PreviousStep()
{
CurrentStepIndex--;
GotoStep();
}
private void GotoStep()
{
var query = from step in CurrentPhase.Steps
where ????
select step;
CurrentStep = query.First();
}
CurrentPhase.Steps
是ObservableCollection<Step> Steps {get; set;}
。在这个类的构造函数中,我有一种为属性“CurrentStep
”设置默认值的方法,因此总会有一个弹出板。
鉴于此集合,我希望使用CurrentStep
中存储的CurrentStepIndex
对象的索引来查找此项目在集合中的位置,然后通过递减或递增来更改该索引。然后,使用某种linq查询,在新索引处找到“下一步”。
不幸的是,我很难制定我的LINQ查询。更重要的是,我不确定这个算法是否会起作用。
完成LINQ查询需要什么才能使此算法有效?
或者,有没有更好的方法来实现我想要的目标?
答案 0 :(得分:1)
使用以下内容但请务必控制溢出
if(CurrentStepIndex>=0 && CurrentStepIndex<CurrentPhase.Steps.Count)
{
CurrentStep= CurrentPhase.Steps[CurrentStepIndex)
}
答案 1 :(得分:1)
这里没有必要使用LINQ。 ObservableCollection<T>继承自Collection<T>,其Items属性(C#中的索引器)。这意味着您可以使用以下代码而不是LINQ:
private void GotoStep()
{
CurrentStep = CurrentPhase.Steps[CurrentStepIndex];
}