我正在开发WPF应用程序,其中必须向最终用户提供画布。画布应该具有一个工具箱,其中包含矩形,正方形等基本形状,他可以将其拖放到画布上。用户完成操作后,他将单击“保存”按钮。

现在应该将画布保存到数据库中,并且下次用户去检索画布时,应该使画布处于上次离开时​​的状态,以便他可以继续编辑。
画布代表地板,地板上有多个部分,每个部分都由基本形状表示。

任何指导将不胜感激。

最佳答案

@Rachit,我可能是错的,但是您似乎在这里遗漏了重点。这就是说,您不应该保存UI元素,而应该保存显示为UI元素的数据。

您必须已经具有包含Canvas上的位置,颜色和形状类型的数据对象...这是您应该保存的,而不是实际的XAML。使用Serialization,这是一个非常简单的过程。您可以按照How to save/restore serializable object to/from file?问题中的答案进行操作。

现在可以使用XamlWriter.Save Method直接保存XAML。让我们假设您实际上已经做了一分钟...现在您有了一个包含一些XAML的保存文件。现在怎么办?即使您设法在视图模型或后面的代码中重新加载了Canvas(实际上对UI都不了解),那么您会怎么做?

您手中可能有一个Canvas,但是您再也没有数据了。如果用户要移动对象怎么办?您没有数据,所以您没有。现在,如果您已经保存了数据,则随时可以随时重新渲染Canvas。这是(许多原因之一)为什么需要保存数据而不是UI控件。

关于c# - WPF保存 Canvas ,然后从持久状态取回它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20969128/

10-09 06:03
查看更多