WPF 中Command绑定及InvalidateRequerySuggested使用注意点
来源:互联网 发布:java 1.7.0 64 bit 编辑:程序博客网 时间:2024/05/20 06:26
在WPF开发中,按钮的点击和不可点击常用命令绑定来自动完成。例如下面的示例:
xmal代码:
后台窗体Load 事件中绑定命令代码:
bool isUndo=true; CommandBinding cmdBinding = new CommandBinding(ApplicationCommands.Undo, (s1, exeArgs) => { RoutedCommand cmd = exeArgs.Command as RoutedCommand; if (cmd != null) { string cmdName = cmd.Name; MessageBox.Show(cmdName); } }, (s2, canExeArgs) => { canExeArgs.CanExecute = isUndo; } ); this.CommandBindings.Add(cmdBinding);
此时运行程序,按组合快捷键ctrl+z ,会弹出“undo”字样,
如果在this.CommandBindings.Add(cmdBinding) 后加入如下代码:
Thread td = new Thread(new ThreadStart(() => { Thread.Sleep(1000*5); isUndo = false; })); td.Start();
窗体Load后,不做任何操作,包括移动鼠标或按住某个键盘键,理论上5秒后按钮会变为不可用。但实际上需要触碰下界面或移动鼠标,按住键盘等才可以使按钮反灰不可用。
此时解决办法是: CommandManager.InvalidateRequerySuggested();
Thread td = new Thread(new ThreadStart(() => { Thread.Sleep(1000*10); isUndo = false; CommandManager.InvalidateRequerySuggested(); }));
再次运行程序(切记:不做任何操作,包括移动鼠标或按住某个键盘键)发现5s后按钮还未变灰。问题在哪里?
原因在于CommandManager.InvalidateRequerySuggested()需要在UI线程中运行,该如下方式即可:
this.Dispatcher.BeginInvoke(new Action(() =>
{
CommandManager.InvalidateRequerySuggested();
}));
阅读全文
0 0
- WPF 中Command绑定及InvalidateRequerySuggested使用注意点
- WPF Prism 中Command绑定的简单应用
- ajaxFileUpload使用及注意点
- WKWebView使用及注意点
- CoordinatorTabLayout注意点及使用.
- wpf-Style注意点
- wpf-Resource注意点
- wpf-DrawingBrush注意点
- 关于oracle中 != 及 null 使用注意点
- Android中BroadcastReceiver广播使用及注意点
- android布局中使用include及需注意点
- Bitmap使用过程中需注意的点及优化
- 关于oracle中 != 及 null 使用注意点
- iOS中Block使用注意点及常见问题浅析
- iOS中block的简单使用及注意点
- WPF中使用XmlDataProvider做控件绑定
- WPF中使用ObjectDataProvider绑定方法
- 在WPF中如何使用RelativeSource绑定
- 八大排序算法之(二)插入排序 希尔排序
- 广州本爱的郑舒匀老师挽救了我的婚姻,谁说她是骗子?!
- Java内部类的总结
- wxWidgets3.03的下载与安装
- 【cocos2d-x 源码解析】帧动画
- WPF 中Command绑定及InvalidateRequerySuggested使用注意点
- IOS设计模式----对象池模式OBJC版
- zookeeper安装
- JMeter学习-017-java.net.SocketException: Permission denied: connect 解决方案
- stm32 usb lib v2.2.0 越界bug解决办法
- 性能测试TPS目标值确定-二八原则
- js中关于function两种声明的区别——预解析
- 如何利用新媒体做SEO推广?
- RecyclerView 条目单选----单选时改变文本的背景框形状(seletor)