C#UWP撤消按钮

时间:2016-03-08 16:33:10

标签: c# win-universal-app undo

好的,所以我创建了一个应用来管理2支球队的得分。 APP Layout。如你所见,我有A队和B队,下面的0加总得分,而低于你有每轮得分的历史记录。 按下go按钮时,2个文本框中的点将对所有得分进行添加,并在列表中添加该轮的点数。 如您所见,我创建了一个撤消按钮。因此,如果我按下Go按钮,我可以点击我的撤销按钮撤消按钮以撤消我的错误。问题是我不知道在撤消按钮的点击事件中要写什么代码。

private void Undo_Click(object sender, RoutedEventArgs e)
    {

    }

注意:我的列表绑定到我制作的课程。所以每个列表都通过observablecollection显示它所需的属性。

class List
{
    public int ListA { get; set; }
    public int ListB { get; set; }
}

更新:

private void Undo_Click(object sender, RoutedEventArgs e)
    {
        var lastState = Lists.Last();
        int teamAScore, teamBScore, listA, listB;

        // this way i got the Active scores.
        int.TryParse(CurrentScoreA.Text, out teamAScore);
        int.TryParse(CurrentScoreB.Text, out teamBScore);

        // this way i got the last score that i want to remove.
        listA = lastState.ListA;
        listB = lastState.ListB;

        // here i remove the last score from the Active one.
        teamAScore = teamAScore - listA;
        teamBScore = teamBScore - listB;

        // And here i replace my Active score with 
        // the new one that has the last states removed.
        CurrentScoreA.Text = teamAScore.ToString();
        CurrentScoreB.Text = teamBScore.ToString();

        // this one removes the last states of the list
        // so this way i can always remove the last part of my lsit
        // from both my active score and list till i go back to 0.
        Lists.Remove(lastState);
    }

对于那些在下面回答我的问题并通过阅读并尝试执行它们的2个人来说,我找到了解决方案! :)

2 个答案:

答案 0 :(得分:0)

我的意思是:

class List
{
    public int ListA { get; set; }
    public int ListB { get; set; }
} 

然后你创建2个类的List对象来操作,而另一个对象保持像以前的状态(但它复制你的对象!!!)

,按钮将是:

private void Undo_Click(object sender, RoutedEventArgs e)
    {
        ClassListObj1.ListA = ClassListObj2.ListA;
        ClassListObj1.ListB = ClassListObj2.ListB;
    }

甚至,但我不确定......

private void Undo_Click(object sender, RoutedEventArgs e)
    {
        ClassListObj1 = ClassListObj2;
    }

请记住,在修改列表之前,您必须执行ClassListObj2.ListA = ClassListObj1.ListA;ClassListObj2.ListB = ClassListObj1.ListB;

结构的想法更好,但它需要我更多地了解你的应用程序,详细说明。

答案 1 :(得分:0)

全景图, 你可以创建一个List<List<List>>(你的班级名称没有帮助),每次用户添加分数时,你都会将值保存在状态列表中。因此,当您单击撤消时,您将从列表列表中弹出最后一项并替换为您的列表。这是一个例子

List<List<Score>> ScoreStates = new List<List<Score>>();
List<Score> Scores = new List<Score>();

private void Undo_Click(object sender, RoutedEventArgs e)
{
    var lastState = ScoreStates.Last();
    ScoreStates.Remove(lastState);
    Scores = lastState;
}

public class Score
{
    public int TeamA { get; set; }
    public int TeamB { get; set; }
}