(二)将事件绑定到控件
现在,我们的“添加”和“打印”按钮什么也做不了,因此,我们需要继续。由于添加和打印可能也是你想从窗口菜单调用的事件,并且我们不想重复劳动,因此我们可以在窗口中创建“CommandBinding”。这为我们提供了一个路由的中心位置,并可以确定事件是否在任何给定时间都可行(例如,除非剪贴板中有内容,否则无法粘贴;除非有任务要执行,否则无法打印任务列表。)。将此代码添加到<Window>元素下面:
代码语言:javascript复制<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.New"
Executed="NewCommand_Executed"
CanExecute="NewCommand_CanExecute" />
<CommandBinding Command="ApplicationCommands.Print"
Executed="PrintCommand_Executed"
CanExecute="PrintCommand_CanExecute" />
</Window.CommandBindings>
这个命令绑定集合为我们的每个命令命名,告诉我们事件触发时该怎么做,以及事件是否可以被触发。在这背后,我们添加了这些方法(我在WPF项目中使用C#,但我可以选择使用X#,因为这里的代码量很小,因此无关紧要):
代码语言:javascript复制privatevoid NewCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{ e.CanExecute= true; }
privatevoid NewCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{ MessageBox.Show("New Task"); }
privatevoid PrintCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{ e.CanExecute = true; }
privatevoid PrintCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{ MessageBox.Show("Print"); }
现在,我们仅需要向每个按钮添加一个属性即可将它们链接到命令:
代码语言:javascript复制Command="ApplicationCommands.New"
Command="ApplicationCommands.Print"
现在,当我们启动应用程序时,我们将看到我们的窗口,其两个按钮都位于tackPanel内部的ToolBarPanel中,我们得到的结果如图12所示: