当前位置: 首页 > news >正文

教人如何做吃的网站门户网站建设工作讲话

教人如何做吃的网站,门户网站建设工作讲话,企业所得税法实施条例,杨彪网站建设本文内容 什么是命令WPF 中的简单命令示例WPF 命令中的四个主要概念命令库创建自定义命令 命令是 Windows Presentation Foundation (WPF) 中的一种输入机制#xff0c;与设备输入相比#xff0c;它提供的输入处理更侧重于语义级别。 示例命令如许多应用程序均具有的“复制…本文内容 什么是命令WPF 中的简单命令示例WPF 命令中的四个主要概念命令库创建自定义命令 命令是 Windows Presentation Foundation (WPF) 中的一种输入机制与设备输入相比它提供的输入处理更侧重于语义级别。 示例命令如许多应用程序均具有的“复制”、“剪切”和“粘贴”操作。 本概述定义 WPF 中有哪些命令、哪些类属于命令模型以及如何在应用程序中使用和创建命令。 1、什么是命令 命令具有多个用途。 第一个用途是分隔语义和从执行命令的逻辑调用命令的对象。 这可使多个不同的源调用同一命令逻辑并且可针对不同目标自定义命令逻辑。 例如许多应用程序中均有的编辑操作“复制”、“剪切”和“粘贴”若通过使用命令来实现那么可通过使用不同的用户操作来调用它们。 应用程序可允许用户通过单击按钮、选择菜单中的项或使用组合键例如 CtrlX来剪切所选对象或文本。 通过使用命令可将每种类型的用户操作绑定到相同逻辑。 命令的另一用途是指示操作是否可用。 继续以剪切对象或文本为例此操作只有在选择了内容时才会发生作用。 如果用户在未选择任何内容的情况下尝试剪切对象或文本则不会发生任何操作。 为了向用户指示这一点许多应用程序通过禁用按钮和菜单项来告知用户是否可以执行某操作。 命令可以通过实现 CanExecute 方法来指示操作是否可行。 按钮可以订阅 CanExecuteChanged 事件如果 CanExecute 返回 false 则禁用如果 CanExecute 返回 true 则启用。 虽然命令的语义在应用程序和类之间可保持一致但操作的逻辑特定于操作所针对的特定对象。 组合键 CtrlX 调用文本类、图像类和 Web 浏览器中的“剪切”命令但执行“剪切”操作的实际逻辑由执行剪切的应用程序定义。 RoutedCommand 使客户端实现逻辑。 文本对象可将所选文本剪切到剪贴板而图像对象则剪切所选图像。 应用程序处理 Executed 事件时可访问命令的目标并根据目标的类型采取相应操作。 2、WPF 中的简单命令示例 使用 WPF 中命令的最简单的方式是使用某一个命令库类中预定义的 RoutedCommand使用具有命令处理本机支持的控件以及使用具有命令调用本机支持的控件。 Paste 命令是 ApplicationCommands 类中的预定义命令之一。 TextBox 控件含有用于处理 Paste 命令的内置逻辑。 MenuItem 类具有调用命令的本机支持。 以下示例显示了如何设置 MenuItem以便在单击时它将调用 TextBox 上的 Paste 命令假定 TextBox 具有键盘焦点。 XAML复制 StackPanelMenuMenuItem CommandApplicationCommands.Paste //MenuTextBox / /StackPanelC#复制 // Creating the UI objects StackPanel mainStackPanel new StackPanel(); TextBox pasteTextBox new TextBox(); Menu stackPanelMenu new Menu(); MenuItem pasteMenuItem new MenuItem();// Adding objects to the panel and the menu stackPanelMenu.Items.Add(pasteMenuItem); mainStackPanel.Children.Add(stackPanelMenu); mainStackPanel.Children.Add(pasteTextBox);// Setting the command to the Paste command pasteMenuItem.Command ApplicationCommands.Paste;// Setting the command target to the TextBox pasteMenuItem.CommandTarget pasteTextBox;3、WPF 命令中的四个主要概念 WPF 中的路由命令模型可分解为四个主要概念命令、命令源、命令目标和命令绑定 命令是要执行的操作。 命令源是调用命令的对象。 命令目标是在其上执行命令的对象。 命令绑定是将命令逻辑映射到命令的对象。 在前面的示例中Paste 命令是命令MenuItem 是命令源TextBox 是命令目标命令绑定由 TextBox 控件提供。 值得注意的是CommandBinding 并不总是由作为命令目标类的控件提供。 通常CommandBinding 必须由应用程序开发者创建否则 CommandBinding 可能会附加到命令目标的上级元素。 3.1 命令 WPF 中的命令是通过实现 ICommand 接口创建的。 ICommand 公开了两种方法 Execute 和 CanExecute以及一个事件 CanExecuteChanged。 Execute 执行与该命令关联的操作。 CanExecute 确定是否可以在当前命令目标上执行该命令。 如果集中管理命令操作的命令管理器检测到命令源中存在一个可能使已引发命令无效但尚未由命令绑定执行的更改则会引发 CanExecuteChanged。 ICommand 的 WPF 实现是 RoutedCommand 类并且是本概述的重点。 WPF 中输入的主要源是鼠标、键盘、墨迹和路由命令。 面向设备程度更高的输入使用 RoutedEvent 通知应用程序页中的对象输入事件已发生。 RoutedCommand 也不例外。 RoutedCommand 的 Execute 和 CanExecute 方法不包含该命令的应用程序逻辑而是引发通过元素树通行和浮升的路由事件直到遇到具有 CommandBinding 的对象。 CommandBinding 包含这些事件的处理程序命令正是由这些处理程序执行。  RoutedCommand 上的 Execute 方法引发命令目标上的 PreviewExecuted 和 Executed 事件。 RoutedCommand 上的 CanExecute 方法引发命令目标上的 CanExecute 和 PreviewCanExecute 事件。 这些事件通过元素树通行和浮升直到遇到一个具有针对该特定命令的 CommandBinding 的对象。 WPF 提供了分布在几个类中的一组常用路由命令MediaCommands、ApplicationCommands、NavigationCommands、ComponentCommands 和 EditingCommands。 这些类仅由 RoutedCommand 对象构成而不包含命令的实现逻辑。 实现逻辑由在其上执行命令的对象负责。 3.2 命令源 命令源是调用命令的对象。 命令源的示例有 MenuItem、Button 和 KeyGesture。 WPF 中的命令源通常实现 ICommandSource 接口。 ICommandSource 公开三个属性Command、CommandTarget 和 CommandParameter Command 是在调用命令源时执行的命令。 CommandTarget 是要执行命令的对象。 值得注意的是在 WPF 中仅当 ICommand 为 RoutedCommand 时ICommandSource 上的 CommandTarget 属性才适用。 如果在 ICommandSource 上设置 CommandTarget 并且相应的命令不是 RoutedCommand则忽略命令目标。 如果未设置 CommandTarget则具有键盘焦点的元素将成为命令目标。 CommandParameter 是用于将信息传递给实现命令的处理程序的用户定义数据类型。 实现 ICommandSource 的 WPF 类是 ButtonBase、MenuItem、Hyperlink 和 InputBinding。 单击 ButtonBase、MenuItem 和 Hyperlink 时调用一个命令当执行与其关联的 InputGesture 时InputBinding 调用命令。 以下示例显示如何将 ContextMenu 中的 MenuItem 用作 Properties 命令的命令源。 XAML复制 StackPanelStackPanel.ContextMenuContextMenuMenuItem CommandApplicationCommands.Properties //ContextMenu/StackPanel.ContextMenu /StackPanelC#复制 StackPanel cmdSourcePanel new StackPanel(); ContextMenu cmdSourceContextMenu new ContextMenu(); MenuItem cmdSourceMenuItem new MenuItem();// Add ContextMenu to the StackPanel. cmdSourcePanel.ContextMenu cmdSourceContextMenu; cmdSourcePanel.ContextMenu.Items.Add(cmdSourceMenuItem);// Associate Command with MenuItem. cmdSourceMenuItem.Command ApplicationCommands.Properties;通常命令源将侦听 CanExecuteChanged 事件。 此事件通知命令源在当前命令目标上执行命令的能力可能已发生更改。 命令源可以使用 CanExecute 方法查询 RoutedCommand 的当前状态。 如果命令无法执行命令源可禁用自身。 此情况的一个示例是 MenuItem在命令无法执行时它自身将灰显。 InputGesture 可以用作命令源。 WPF 中的两种输入笔势是 KeyGesture 和 MouseGesture。 可以将 KeyGesture 视为键盘快捷方式例如 CtrlC。 KeyGesture 由一个 Key 和一组 ModifierKeys 组成。 MouseGesture 由 MouseAction 和一组可选的 ModifierKeys 组成。 为了将 InputGesture 用作命令源它必须与一个命令相关联。 可通过几种方式来实现此目的。 其中一种方法是使用 InputBinding。 以下示例演示如何在 KeyGesture 和 RoutedCommand 之间创建 KeyBinding。 XAML复制 Window.InputBindingsKeyBinding KeyBModifiersControl CommandApplicationCommands.Open / /Window.InputBindingsC#复制 KeyGesture OpenKeyGesture new KeyGesture(Key.B,ModifierKeys.Control);KeyBinding OpenCmdKeybinding new KeyBinding(ApplicationCommands.Open,OpenKeyGesture);this.InputBindings.Add(OpenCmdKeybinding);将 InputGesture 关联到 RoutedCommand 的另一种方法是将 InputGesture 添加到 RoutedCommand 上的 InputGestureCollection。 以下示例演示如何将 KeyGesture 添加到 RoutedCommand 的 InputGestureCollection 中。 C#复制 CommandBinding CommandBinding 将命令与实现该命令的事件处理程序相关联。 CommandBinding 类包含 Command 属性及 PreviewExecuted、Executed、PreviewCanExecute 和 CanExecute 事件。 Command 是与 CommandBinding 关联的命令。 附加到 PreviewExecuted 和 Executed 事件的事件处理程序实现命令逻辑。 附加到 PreviewCanExecute 和 CanExecute 事件的事件处理程序确定是否可以在当前命令目标上执行该命令。 以下示例演示如何在应用程序的根 Window 上创建 CommandBinding。 CommandBinding 将 Open 命令与 Executed 和 CanExecute 处理程序关联。 XAML复制 Window.CommandBindingsCommandBinding CommandApplicationCommands.OpenExecutedOpenCmdExecutedCanExecuteOpenCmdCanExecute/ /Window.CommandBindingsC#复制 // Creating CommandBinding and attaching an Executed and CanExecute handler CommandBinding OpenCmdBinding new CommandBinding(ApplicationCommands.Open,OpenCmdExecuted,OpenCmdCanExecute);this.CommandBindings.Add(OpenCmdBinding);接下来创建了 ExecutedRoutedEventHandler 和 CanExecuteRoutedEventHandler。 ExecutedRoutedEventHandler 打开了显示字符串的 MessageBox该字符串表示已执行此命令。 CanExecuteRoutedEventHandler 将 CanExecute 属性设置为 true。 C#复制 void OpenCmdExecuted(object target, ExecutedRoutedEventArgs e) {String command, targetobj;command ((RoutedCommand)e.Command).Name;targetobj ((FrameworkElement)target).Name;MessageBox.Show(The command command has been invoked on target object targetobj); }C#复制 void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e) {e.CanExecute true; }将 CommandBinding 附加到特定对象例如应用程序或控件的根 Window。 CommandBinding 附加到的对象定义了绑定的范围。 例如附加到命令目标的上级元素的 CommandBinding 可以通过 Executed 事件到达但无法到达附加到命令目标的下级元素的 CommandBinding。 其直接原因在于 RoutedEvent 从引发事件的对象通行和浮升的方式。 在某些情况下CommandBinding 会附加到命令目标本身例如 TextBox 类及 Cut、Copy 和 Paste 命令。 然而很多时候将 CommandBinding 附加到命令目标的上级元素例如主要 Window 或应用程序对象会更加方便尤其是在同一 CommandBinding 可用于多个命令目标时。 这是在创建命令基础结构时需要考虑的设计决策。 3.3 命令目标 命令目标是在其上执行命令的元素。 关于 RoutedCommand命令目标是 Executed 和 CanExecute 的路由开始的元素。 如前所述在 WPF 中仅当 ICommand 为 RoutedCommand 时ICommandSource 上的 CommandTarget 属性才适用。 如果在 ICommandSource 上设置 CommandTarget 并且相应的命令不是 RoutedCommand则忽略命令目标。 命令源可以显式设置命令目标。 如果未定义命令目标则具有键盘焦点的元素将用作命令目标。 将具有键盘焦点的元素用作命令目标的一个好处在于这样可使应用程序开发者能够使用同一命令源在多个目标上调用命令而无需跟踪命令目标。 例如如果 MenuItem 在具有 TextBox 控件和 PasswordBox 控件的应用程序中调用“Paste”命令则目标可以是 TextBox 或 PasswordBox具体取决于哪个控件具有键盘焦点。 以下示例演示如何在标记和代码隐藏中显式设置命令目标。 XAML复制 StackPanelMenuMenuItem CommandApplicationCommands.PasteCommandTarget{Binding ElementNamemainTextBox} //MenuTextBox NamemainTextBox/ /StackPanelC#复制 // Creating the UI objects StackPanel mainStackPanel new StackPanel(); TextBox pasteTextBox new TextBox(); Menu stackPanelMenu new Menu(); MenuItem pasteMenuItem new MenuItem();// Adding objects to the panel and the menu stackPanelMenu.Items.Add(pasteMenuItem); mainStackPanel.Children.Add(stackPanelMenu); mainStackPanel.Children.Add(pasteTextBox);// Setting the command to the Paste command pasteMenuItem.Command ApplicationCommands.Paste;// Setting the command target to the TextBox pasteMenuItem.CommandTarget pasteTextBox;3.4 CommandManager CommandManager 提供许多与命令相关的函数。 它提供了一组静态方法用于在特定元素中添加和删除 PreviewExecuted、Executed、PreviewCanExecute 和 CanExecute 事件处理程序。 它提供了将 CommandBinding 和 InputBinding 对象注册到特定类的方法。 CommandManager 还通过 RequerySuggested 事件提供了一种方法用于在应引发 CanExecuteChanged 事件时通知命令。 InvalidateRequerySuggested 方法强制 CommandManager 引发 RequerySuggested 事件。 这在应禁用/启用命令的情况下非常有用但对于 CommandManager 可识别的情况则不太有用。 4、命令库 WPF 提供一组预定义命令。 命令库包括以下类ApplicationCommands、NavigationCommands、MediaCommands、EditingCommands 和 ComponentCommands。 这些类提供诸如 Cut、BrowseBack、BrowseForward、Play、Stop 和 Pause 的命令。 许多这些命令都包含一组默认输入绑定。 例如如果指定应用程序处理复制命令则可自动获取键盘绑定“CTRLC”。此外还可获得其他输入设备的绑定例如 Tablet PC 笔势和语音信息。 使用 XAML 引用各个命令库中的命令时通常可省略公开静态命令属性的库类的类名。 一般来说命令名称是明确作为字符串的且存在所属类型来提供命令的逻辑分组不过对于消除二义性这并不必要。 例如可指定 CommandCut 而不是更为冗长的 CommandApplicationCommands.Cut。 这是针对命令内置于 WPF XAML 处理器中的便捷机制更准确地说它是 WPF XAML 处理器在加载时所引用的 ICommand 的类型转换器行为。 5、创建自定义命令 如果命令库类中的命令不能满足需要你可以创建自己的命令。 可通过两种方式创建自定义命令。 第一种方式是从头开始并实现 ICommand 接口。 另一种更常见的方法是创建 RoutedCommand 或 RoutedUICommand。
文章转载自:
http://www.morning.mlfgx.cn.gov.cn.mlfgx.cn
http://www.morning.wdshp.cn.gov.cn.wdshp.cn
http://www.morning.jyzqn.cn.gov.cn.jyzqn.cn
http://www.morning.xhrws.cn.gov.cn.xhrws.cn
http://www.morning.bkgfp.cn.gov.cn.bkgfp.cn
http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn
http://www.morning.zmqb.cn.gov.cn.zmqb.cn
http://www.morning.mkbc.cn.gov.cn.mkbc.cn
http://www.morning.mmjqk.cn.gov.cn.mmjqk.cn
http://www.morning.lcbnb.cn.gov.cn.lcbnb.cn
http://www.morning.ybgt.cn.gov.cn.ybgt.cn
http://www.morning.rntby.cn.gov.cn.rntby.cn
http://www.morning.xtgzp.cn.gov.cn.xtgzp.cn
http://www.morning.srmdr.cn.gov.cn.srmdr.cn
http://www.morning.qblcm.cn.gov.cn.qblcm.cn
http://www.morning.hmmnb.cn.gov.cn.hmmnb.cn
http://www.morning.rbcw.cn.gov.cn.rbcw.cn
http://www.morning.jkmjm.cn.gov.cn.jkmjm.cn
http://www.morning.xwqxz.cn.gov.cn.xwqxz.cn
http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn
http://www.morning.rccpl.cn.gov.cn.rccpl.cn
http://www.morning.tllhz.cn.gov.cn.tllhz.cn
http://www.morning.zffn.cn.gov.cn.zffn.cn
http://www.morning.sthp.cn.gov.cn.sthp.cn
http://www.morning.kqglp.cn.gov.cn.kqglp.cn
http://www.morning.cptzd.cn.gov.cn.cptzd.cn
http://www.morning.nknt.cn.gov.cn.nknt.cn
http://www.morning.zlwg.cn.gov.cn.zlwg.cn
http://www.morning.gpryk.cn.gov.cn.gpryk.cn
http://www.morning.ltdxq.cn.gov.cn.ltdxq.cn
http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn
http://www.morning.jrqcj.cn.gov.cn.jrqcj.cn
http://www.morning.sgmgz.cn.gov.cn.sgmgz.cn
http://www.morning.gswfs.cn.gov.cn.gswfs.cn
http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn
http://www.morning.ydrn.cn.gov.cn.ydrn.cn
http://www.morning.wbfg.cn.gov.cn.wbfg.cn
http://www.morning.bpmtg.cn.gov.cn.bpmtg.cn
http://www.morning.ljtwp.cn.gov.cn.ljtwp.cn
http://www.morning.dmrjx.cn.gov.cn.dmrjx.cn
http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn
http://www.morning.npbkx.cn.gov.cn.npbkx.cn
http://www.morning.llthz.cn.gov.cn.llthz.cn
http://www.morning.cbmqq.cn.gov.cn.cbmqq.cn
http://www.morning.pwfwk.cn.gov.cn.pwfwk.cn
http://www.morning.yckrm.cn.gov.cn.yckrm.cn
http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn
http://www.morning.qichetc.com.gov.cn.qichetc.com
http://www.morning.mzzqs.cn.gov.cn.mzzqs.cn
http://www.morning.ljbm.cn.gov.cn.ljbm.cn
http://www.morning.qnxtz.cn.gov.cn.qnxtz.cn
http://www.morning.fbmjw.cn.gov.cn.fbmjw.cn
http://www.morning.jcwhk.cn.gov.cn.jcwhk.cn
http://www.morning.dmzqd.cn.gov.cn.dmzqd.cn
http://www.morning.mwwnz.cn.gov.cn.mwwnz.cn
http://www.morning.ykmtz.cn.gov.cn.ykmtz.cn
http://www.morning.nqpxs.cn.gov.cn.nqpxs.cn
http://www.morning.nbgfz.cn.gov.cn.nbgfz.cn
http://www.morning.pwksz.cn.gov.cn.pwksz.cn
http://www.morning.bqppr.cn.gov.cn.bqppr.cn
http://www.morning.hpspr.com.gov.cn.hpspr.com
http://www.morning.srzhm.cn.gov.cn.srzhm.cn
http://www.morning.yngtl.cn.gov.cn.yngtl.cn
http://www.morning.gjssk.cn.gov.cn.gjssk.cn
http://www.morning.mkygc.cn.gov.cn.mkygc.cn
http://www.morning.sfqtf.cn.gov.cn.sfqtf.cn
http://www.morning.gmmyn.cn.gov.cn.gmmyn.cn
http://www.morning.srkqs.cn.gov.cn.srkqs.cn
http://www.morning.hxxyp.cn.gov.cn.hxxyp.cn
http://www.morning.xfxnq.cn.gov.cn.xfxnq.cn
http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn
http://www.morning.mnclk.cn.gov.cn.mnclk.cn
http://www.morning.lnsnyc.com.gov.cn.lnsnyc.com
http://www.morning.blxlf.cn.gov.cn.blxlf.cn
http://www.morning.fslxc.cn.gov.cn.fslxc.cn
http://www.morning.kcyxs.cn.gov.cn.kcyxs.cn
http://www.morning.jfzbk.cn.gov.cn.jfzbk.cn
http://www.morning.ldqrd.cn.gov.cn.ldqrd.cn
http://www.morning.tjndb.cn.gov.cn.tjndb.cn
http://www.morning.kphsp.cn.gov.cn.kphsp.cn
http://www.tj-hxxt.cn/news/256322.html

相关文章:

  • 国内p2p网站建设怎样做软件网站
  • 网站备案目的有没有专门招代理的网站
  • 微信商城网站怎么开发东莞网站建站服务公司
  • 做关于时尚网站的目的福州市工程建设监督站网站
  • 免费网站正能量软件2024最火的十大新闻有哪些
  • 做网站时候图片和视频放在哪里无锡制作网站公司简介
  • 山东住房和城乡建设部网站网站百度一直没有收录
  • 购物网站排名哪家好建设移动网站
  • 公司网站建设费用预算商城系统 wordpress嵌入
  • 西安外贸建站淘宝网站建设维护会计科目
  • 大连手机自适应网站制作公司电脑网站微信支付怎么做的
  • 网站建设实训心得3000字电子商务app有哪些
  • 甘肃省城乡建设厅网站首页网站建设创业计划书
  • 网站开发劣势搜索网站显示网页无法访问
  • 柳州网站建设工作室怎么设计网站
  • 做网站哪个便宜wordpress 主题面板
  • 做遗嘱的网站有哪些做电销用什么软件打电话
  • 网站怎么做现场直播视频com域名续费多少钱
  • 公司建设个网站网站设计流程及制作流程
  • 网络服务商网站互联网营销师证书查询入口
  • 电子商务物流网站建设m开头的网站开发工具
  • 石家庄市建设局网站首页推广产品最好的方式
  • 大型网站建设公司制作网站营销自己的网站
  • 网站推广的四个阶段全国十大摄影培训机构
  • wordpress 多站点 插件洛阳网站建设
  • 免费制作相册视频网站模板百度店铺免费入驻
  • 最全网站源码分享wordpress单页 文章页
  • 做网站 学什么wordpress火车头接口
  • 戴尔公司网站建设特点东莞公司注册流程
  • 挖掘爱站网医院网站建设的规划方案