WEB开发网
开发学院软件开发C语言 实用模式:内部域特定语言 阅读

实用模式:内部域特定语言

 2010-09-30 22:42:30 来源:WEB开发网   
核心提示: //Openthe"ExecutionQueue"screenwiththe//CTRL-QshortcutAction("OpentheTestQueue").Bind(ModifierKeys.Control,Key.Q).ToScreen<Qu

// 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)。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:实用 模式 内部

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接