我正在将旧的编辑器类型应用程序从 WinForms 转换为 WPF。它有一些工具(如 Photoshop 中的那种),您可以在其中选择它们,它们有一些行为,并且它们有一个光标图标。
我已经将我的域逻辑分离到一个 BLL 中,因此那里有一个用于工具行为的接口以及一些不依赖于 WPF 的实现。我试图弄清楚如何在不将 BLL 绑定到 WPF 的情况下实现光标行为。
似乎与绘图有关的一切都是特定于平台的——绘图上下文、图像等。这意味着我无法将任何方法或参数类型放入 BLL 的接口中。我不打算再次实际使用 WinForms,而且我将来也没有计划其他平台,但我想把这段代码写得好,就好像那是可能的一样。
示例代码:我在 BLL 中有这个界面:
public interface IToolProvider
{
IToolBehavior Tool { get; }
}
然后这个:
public interface IToolBehavior
{
void Click(ScreenDocument screen, Point location);
void Move(ScreenDocument screen, Point location);
void Release(ScreenDocument screen);
void RightClick(ScreenDocument screen, Point location);
}
(我在Point
这里使用自己的实现,基本上是由于每个平台都有自己的 Point 类的确切问题。)
我想IToolCursor Cursor { get; }
在IToolProvider
界面中添加类似的东西,但我不知道IToolCursor
界面中可以与 WPF 和其他平台同时工作的内容。