实用模式:内部域特定语言
2010-09-30 22:42:30 来源:WEB开发网// Open the "Execution Queue" screen with the
// CTRL - Q shortcut
Action("Open the Test Queue")
.Bind(ModifierKeys.Control, Key.Q)
.ToScreen<QueuePresenter>();
在单个屏幕的屏幕激活代码中,我可以使用类似以下代码在主应用程序外壳中定义临时的键盘快捷方式和动态菜单选项:
screenObjects.Action("Run").Bind(ModifierKeys.Control, Key.D1)
.To(_presenter.RunCommand).Icon = Icon.Run;
screenObjects.Action("Cancel").Bind(ModifierKeys.Control, Key.D2)
.To(_presenter.CancelCommand).Icon = Icon.Stop;
screenObjects.Action("Save").Bind(ModifierKeys.Control, Key.S)
.To(_presenter.SaveCommand).Icon = Icon.Save;
现在我们了解一下如何实现 Fluent 界面。基本上,它是名为 ScreenAction 的语义模型类,用于实际构建所有 WPF 构成对象。该类如下所示:
public interface IScreenAction
{
bool IsPermanent { get; set; }
InputBinding Binding { get; set; }
string Name { get; set; }
Icon Icon { get; set; }
ICommand Command { get; }
bool ShortcutOnly { get; set; }
void BuildButton(ICommandBar bar);
}
这是一个重要细节。我可以独立于 Fluent 界面构建和测试 ScreenAction 对象,此时 Fluent 界面只须配置 ScreenAction 对象。实际 DSL 在名为 ScreenObjectRegistry 的类上实现,该类可跟踪 ScreenAction 活动对象的列表(请参见图 1)。
更多精彩
赞助商链接