我这里有一个很大的问题。我在我的绘图应用程序(Caliburn.Micro)中使用MVVM,我找不到一种合理的方法来使用实时预览来绘制形状。
绘图画布由一个获取输入并将数据提供给模型的画布和一个包含许多画布的Grid组成,每个画布一个。模型触发事件(我将使用Line作为示例):
现在,在注册到这些事件的ViewModel中,我只需将正确的画布添加到等效的WPF形状(在本例中为System.Windows.Shapes.Line),并在添加形状时设置参数。但是,当移动鼠标以显示绘制形状的实时预览时,我无法想到更新形状参数的任何想法。
我尝试使用依赖属性,但它不起作用,似乎是一种矫枉过正(因为所有这些画布中的形状数量)。我也尝试过扩展Line,但这是不可能的,因为课程是密封的。我还需要与绘制的形状进行交互(例如调整大小,旋转)。
答案 0 :(得分:1)
我会查看writeablebitmap和WriteableBitmapEx扩展名。这将具有相当不错的性能,具体取决于您需要渲染的内容。如果您需要同时在屏幕上显示1000个内容,您可能需要考虑使用DirectX和SlimDx或SharpDx等包装器。
答案 1 :(得分:0)
所以你基本上需要两行,一个看起来像以前一样,一个看起来像用户“提交”他的变化时会是什么样?您可以拥有一个包含两个相同形状类型的容器类,并在用户处于编辑模式时移动第二个形状类型。当用户退出编辑模式时,您可以保留第一个(用户取消)或使第二个成为新的,唯一的第一个形状。