如何将InkCanvas的内容存储在List中

时间:2017-11-15 18:23:27

标签: c# windows uwp

我正在为 var Asks = jsonresponse.pair_name.asks 实现撤消/重做功能,因此我需要在每次修改时将InkCanvas的内容保存在列表(而不是文件)中。我目前正在InkCanvas保存它,但由于它需要是一个实例,我不能在列表中使用它。有没有办法可以存储多个内容并在必要时检索?

1 个答案:

答案 0 :(得分:1)

根据您对撤消/重做功能的要求,您可以使用AddStrokeDeleteSelected方法添加或删除要撤消或重做的笔划。这是我的代码,你可以参考。

private List<InkStroke> undoList = new List<InkStroke>();
private void Undo(object sender, RoutedEventArgs e)
{
    IReadOnlyList<InkStroke> inkList = inkCanvas.InkPresenter.StrokeContainer.GetStrokes();
    if (inkList.Count > 0)
    {
        InkStroke undoStroke = inkList[inkList.Count - 1];
        undoStroke.Selected = true;
        undoList.Add(undoStroke.Clone());
        inkCanvas.InkPresenter.StrokeContainer.DeleteSelected();
    }
}

private void Redo(object sender, RoutedEventArgs e)
{
    if (undoList.Count > 0)
    {
        InkStroke redoStroke = undoList[undoList.Count - 1];
        inkCanvas.InkPresenter.StrokeContainer.AddStroke(redoStroke);
        undoList.Remove(redoStroke);
    }
}