我确实有一个应用程序可以处理在WPF Canvas上绘制一些线条和形状,并在绘制的线条上添加许多点数1000。
哪种设计模式适合在wpf中使用这种高度广泛的画布。
MVVM是否适合这种绘图和点绘图的东西?
非常感谢任何帮助/想法。
此致 Sreekesh NK
答案 0 :(得分:1)
形状和线条图是特定于UI的,因此在MVVM中,它将存在于视图中。
如果你坚持使用线条和形状,那么也许模型和ViewModel会参与其中,但说实话,设计模式似乎并不符合你的要求。
画布绘图并不属于特定的设计模式。当然你可以使用MVVM,但我看不出这会影响你对绘图组件的具体实现。
答案 1 :(得分:0)
以下是您可以考虑使用的设计的基本概述:
(我是一个C ++人,但我想你会明白这个想法)
class ScreenBase
{
public:
// define abstract operations here, may consider different return types
// These may be Template Patterns depending
// if there is common stuff to all screens
virtual void drawLine(/* appropriate params here*/) = 0;
virtual void dragLine(/* appropriate params here*/) = 0;
virtual void deleteLine(/* appropriate params here*/) = 0;
// more common operations
// Use a Template pattern if there is common screen
// serialization stuff, else just define it as abstract
void serialize() {
// do common stuff here
doSynchronize();
// do more common stuff here
}
virtual void doSynchronize(/* appropriate params here*/) = 0;
...
private:
// store the drawing shapes here appropriately
};
class Screen1 : public ScreenBase
{
public:
// concrete operation implementations
virtual void drawLine(/* appropriate params here*/);
virtual void dragLine(/* appropriate params here*/);
virtual void deleteLine(/* appropriate params here*/);
virtual void doSerialize() { ... }
// concrete specifics here
};
// class Screen2 : public ScreenBase
// class Screen3 : public ScreenBase
// I dont know the Microsoft stuff, the shapes should be
// defined in WPF, So we wont need to define anything here.
您可以考虑使用Stategy Design模式而不是屏幕实现序列化,这可以创建单独的序列化类或类层次结构,并将其设置为屏幕上的属性
尝试这一点,然后随着你的进步,尝试提出更具体的问题