首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF 绑定命令在 MVVM 的 CanExecute 和 Execute 在按钮点击都没触发可能的原因

在 WPF 推荐使用 MVVM 绑定命令,但是绑定命令会存在很多坑,其中一个就是焦点的问题。...DataContext = ViewModel; } public ViewModel ViewModel { get; } = new ViewModel(); 如何绑定...Command}"> 后台代码的失去焦点需要通过在一次 Dispatcher 里面写,不然将会出现有趣的坑,具体是什么坑,可以下载我的源代码自己修改一...,可以发现按钮的命令没有触发 在命令的 CanExecute 打上断点,可以发现连 CanExecute 都没有进入 如果遇到了在按钮 MVVM 绑定命令,发现命令没有触发,同时 CanExecute...都没有进入,可以猜可能是命令没有初始化、命令没有绑对,还有可能是在过程出现焦点问题 另外不一定是用户直接调用 Focus 其他的 WPF 控件间接修改 源代码放在 github

1.5K20

【IOS开发高级系列】MVVM—ReactiveCocoa架构设计专题(三)

最后确保把viewDidLoad中updateUIState的调用删掉。         编译运行,看看登录按钮。当用户名和密码输入有效按钮就是可用的,和以前一样。         ...如果你找不到的话,下图中红色箭头指示的就是删除按钮。         你已经知道了ReactiveCocoa框架是如何给基本UIKit控件添加属性和方法的了。...这个block会在登录成功或失败执行。你可以在按钮点击事件的subscribeNext: blcok里直接调用这个方法,但是为什么你要这么做?         ...现在分解来看一。         上面的代码使用RACSignal的createSignal:方法来创建信号。方法的入参是一个block,这个block描述了这个信号。...在使用ReactiveCocoa后,我发现了一个有趣的事情,那就是你可以用很多种不同的方法来解决同一个问题。你可以用教程中的例子试试,调整一信号,改改信号的分割和聚合。

26830
您找到你想要的搜索结果了吗?
是的
没有找到

C# 设计模式 责任链

我看了他的源代码,他每个页面都把后退按钮点击事件+=他的方法。 我们可以使用UWP的后退按钮,但是需要小心,在哪些处理需要知道,不可以在每个需要处理都添加事件。...在我之前写的游戏win10 uwp 商业游戏进入游戏,用户按返回按钮,需要返回欢迎界面,那么这时候就需要添加后退的处理。...因为我添加的是 MVVM 框架,于是在跳转进游戏的 ViewModel 添加处理。关于这个框架,请看win10 uwp MVVM 轻量框架这里,但是我不会在本文用了太多这个框架的东西。...这里的意思是如果调用一个方法,这个方法有 await 那么这个方法如果不是 async Task 那么就会直接被跳过,不会往下面执行,所以如果把最后一句代码替换前面的,那么就会调用责任链的下一处理,但是没有告诉他已经处理了...所以在责任链,需要注意同步和异步的转换,如果实在需要,那么请参见我的博客,如何异步转同步。

51930

C# 设计模式 责任链 后退按钮使用责任链

我看了他的源代码,他每个页面都把后退按钮点击事件+=他的方法。 我们可以使用UWP的后退按钮,但是需要小心,在哪些处理需要知道,不可以在每个需要处理都添加事件。...在我之前写的游戏win10 uwp 商业游戏进入游戏,用户按返回按钮,需要返回欢迎界面,那么这时候就需要添加后退的处理。...因为我添加的是 MVVM 框架,于是在跳转进游戏的 ViewModel 添加处理。关于这个框架,请看win10 uwp MVVM 轻量框架这里,但是我不会在本文用了太多这个框架的东西。...这里的意思是如果调用一个方法,这个方法有 await 那么这个方法如果不是 async Task 那么就会直接被跳过,不会往下面执行,所以如果把最后一句代码替换前面的,那么就会调用责任链的下一处理,但是没有告诉他已经处理了...所以在责任链,需要注意同步和异步的转换,如果实在需要,那么请参见我的博客,如何异步转同步。

89910

vue面试题+答案,2021前端面试

对象为引用类型,当复用组件,由于数据对象都指向同一个data对象,当在一个组件中修改data,其他重用的组件中的data会同时被修改;而使用返回对象的函数,由于每次返回的都是一个新对象(Object...v-show 会被编译成指令,条件不满足控制样式将对应节点隐藏 (display:none) 为什么Vue采用异步渲染呢?...在路由配置里调用 beforeEnter。 解析异步路由组件。 在被激活的组件里调用 beforeRouteEnter。 调用全局的 beforeResolve 守卫 (2.5+)。 导航被确认。...虚拟DOM本质上是JavaScript对象,是对真实DOM的抽象 状态变更,记录新树和旧树的差异 最后把差异更新到真正的dom中 Vue 初始化页面闪动问题如何解决?...action 与 mutation 的区别 mutation 是同步更新,$watch 严格模式会报错 action 是异步操作,可以获取数据后调用mutation 提交最终数据 谈谈对keep-alive

1.3K00

C# WPF MVVM开发框架Caliburn.Micro入门介绍①

02 以下是一个关于Caliburn.Micro简短的列表: Action消息: 操作机制允许您将UI触发器(如按钮的“单击”事件)“绑定”到视图模型或演示器上的方法。该机制还允许向方法传递参数。...当触发器发生,“消息”在元素树中冒泡,寻找能够调用指定方法的Action.Target(处理程序)。这就是为什么我们称之为信息。动作消息的“冒泡”特性非常强大,非常有用,尤其是在主/细节场景中。...除了调用之外,该机制还支持“CanExecute”保护。如果该操作具有同名的相应属性或方法,但前面有“Can”一词,则该操作的调用将被阻止,UI将被禁用。操作还支持协同路由(见下文)。...因此,如果您在ViewModel上有一个名为“Save”的方法,在UI中有一个名为“Save”的按钮,我们将自动为“Click”事件创建一个EventTrigger,并为“Save”方法分配一个ActionMessage...Coroutines协同程序 任何操作都可以选择返回IResult或IEnumerable,这为处理异步编程的强大方法打开了大门。

1.7K20

使用Flash检测屏幕阅读器

确切的说是:使用Flash检测Windows平台下使用了MSAA API的辅助技术,并不能区分使用的是屏幕阅读器、屏幕放大器等。...Accessibility.isActive()方法在 Flash 内容和 Flash Player 之间提供异步通信。...这就表示,在调用方法和 Flash Player 进入活动状态这两个时刻之间可能会出现轻微的实时延迟,从而返回不正确的值 false。...要确保正确调用方法,请执行下列操作之一: 如果需要使用辅助功能,可随时调用 Accessibility.isActive() 方法,而不必在第一次播放 Flash 内容使用方法。...例如,您可以使用 onFocus 事件将该方法附加到按钮。 此方法通常使 SWF 文件有足够的时间进行加载,并且您可以假定,屏幕阅读器用户在按 Tab 键必将跳到舞台上的第一个按钮或对象。 示例演示

59920

ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!

RAC 主要特性之一就是提供了一种单一又统一的方式来处理各种异步操作--包括代理方法,block回调,target-action机制,通知和KVO等....; return [RACSignal empty]; }]; 或者异步网络请求: // 监听"登陆"按钮,并记录网络请求成功的消息. // 这个block会在来任意开始登陆步骤,执行登陆命令时调用...返回一个 signal信号对象,这个对象在网络对象完成发送 值. // 可以使用 -filter 方法来保证当且仅当网络请求完成,才返回一个 signal 对象....; }]; Signals 信号可以被链接以连续执行异步操作,而不再需要嵌套式的block调用.用法类似于: // 用户登录,然后加载缓存信息,然后从服务器获取剩余的消息.在这一切完成后,输入信息到控制台...ReactiveCocoa 非常抽象,初次接触,通常很难理解如何使用它来解决具体的问题. 这是一些使用RAC更具有优势的应用场景: 处理异步或事件驱动的数据源.

1.2K91

C#5.0新增功能01 异步编程

I/O 绑定示例:从 Web 服务下载数据 你可能需要在按按钮从 Web 服务下载某些数据,但不希望阻止 UI 线程。...代码表示目的(异步下载某些数据),而不会在与任务对象的交互中停滞。 CPU 绑定示例:为游戏执行计算 假设你正在编写一个移动游戏,在该游戏中,按某个按钮将会对屏幕中的许多敌人造成伤害。...async 关键字将方法转换为异步方法,这使你能在其正文中使用 await 关键字。 应用 await 关键字后,它将挂起调用方法,并将控制权返还给调用方,直到等待的任务完成。...仅允许在异步方法使用 await。 识别 CPU 绑定和 I/O 绑定工作 前两个示例演示如何将 async 和 await 用于 I/O 绑定和 CPU 绑定工作。...dotnetfoundation.org"); return Regex.Matches(html, @"\.NET").Count; } 以下是为通用 Windows 应用编写的相同方案,当按按钮

2.3K20

Vue 01.基础

,绑定一个点击事件 v-on @ 在按钮的事件处理函数中,写相关的业务逻辑代码:拿到 msg 字符串,然后 调用 字符串的 substring 来进行字符串的截取操作,把 第一个字符截取出来,放到最后一个位置即可...; 为了实现点击按钮,自动截取的功能,需要把 2 步骤中的代码,放到一个定时器中去; 代码: HTML <input type="button" value="浪起来...<em>如何</em>根据Id,找到要删除这一项的索引 // 2....如果找到索引了,直接<em>调用</em> 数组的 splice <em>方法</em> // <em>方法</em>一,<em>使用</em>数组的some<em>方法</em> /* this.list.some((item, i) => { if (item.id...,只不过在<em>使用</em>这些计算属性<em>时</em>,是把它们的名称直接当作属性来<em>使用</em>的;并不会把计算属性当作<em>方法</em>去<em>调用</em>; // 注意1:在引用计算属性<em>时</em>,不要加()去<em>调用</em>,直接把它当作普通属性去<em>使用</em>; //

1.5K40

QPushButton 基本使用

以下是一个示例,展示了如何在按钮点击显示一个消息框: from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QMessageBox...pressed-background-color: 设置按钮在按状态的背景颜色。 hover-background-color: 设置鼠标悬停在按钮的背景颜色。...前景颜色属性: color: 设置按钮的前景(文本)颜色。 pressed-color: 设置按钮在按状态的前景颜色。 hover-color: 设置鼠标悬停在按钮的前景颜色。...# 调用父类的方法以保留按钮的默认行为 super().mousePressEvent(event) 在上述代码中,我们重写了 mousePressEvent() 方法,当左键点击按钮,它将打印一条消息...该方法在按钮需要重新绘制调用。在方法体内,您可以使用 QPainter 类来绘制按钮的外观,例如绘制背景、文本和图标。

43540

Python+Tkinter 图形化界面基础篇:多线程和异步编程

为了实现这一目标,我们可以使用多线程和异步编程技术。本篇博客将重点介绍如何在 Python 图形化界面应用程序中使用多线程和异步编程来提高性能和响应性。 为什么需要多线程和异步编程?...,并在按钮点击触发下载线程: download_button = tk.Button(root, text="开始下载", command=start_download_thread) download_button.pack...使用异步编程 异步编程示例 现在让我们看一个使用异步编程的示例。假设我们有一个图形化界面应用程序,其中有一个按钮,点击按钮后需要执行一个异步操作,例如发起 HTTP 请求并等待响应。...,并在按钮点击触发异步操作: fetch_button = tk.Button(root, text="发起请求", command=lambda: asyncio.create_task(fetch_data...总结 在本博客中,我们介绍了如何使用多线程和异步编程来提高 Python 图形化界面应用程序的性能和响应性。多线程可用于将耗时任务移到后台线程,而异步编程可用于处理非阻塞操作。

1.6K11

【愚公系列】2023年12月 Winform控件专题 BackgroundWorker控件详解

ProgressChanged:异步线程报告操作进度的事件。 RunWorkerCompleted:异步操作完成引发的事件。 方法: RunWorkerAsync:启动异步操作的方法。...使用BackgroundWorker控件,需要注意以下几点: 在DoWork事件中执行耗时的操作,不能调用UI线程上的控件,如需更新UI上的控件,需要在ProgressChanged事件中调用。...如果将其设置为true,则可以在异步操作中使用ReportProgress方法报告进度。...当WorkerSupportsCancellation属性设置为true,可以通过调用BackgroundWorker控件的CancelAsync方法来请求取消后台操作。...当点击“取消”按钮调用BackgroundWorker控件的CancelAsync方法来请求取消操作。当异步操作完成,根据操作是否被取消或是否发生错误来显示相应的提示信息。

35311

Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

③ 实现登录 二、LiveData使用 ① 可修改数据 ② 数据观察 三、DataBinding使用 ① 单向绑定 ② 双向绑定 四、源码 前言   MVVM框架出来已经有一段时间了,现在也有很多的项目运用了...二、ViewModel使用   ViewModel的优势在于生命周期和数据持久化,那么它就适用于Activity和Fragment,其次就是异步回调,不会造成内存泄漏,再次就是对View层和Model层进行隔离...下面进入MainActivity中,首先我们改变一布局activity_main.xml在按钮的下面再加如下代码 <TextView android:id="@+id/tv_account...下面我们运行一<em>下</em>: 三、DataBinding<em>使用</em>   Android的DataBinding在已经内置了,因此只需要在app模块的build.gradle中开启就可以<em>使用</em>了。...在onCreate<em>方法</em>中,先将其他的代码注释掉。

14.2K86

前端vue面试题汇总

主要思路就是采用微任务优先的方式调用异步方法去执行 nextTick 包装的方法相关代码如下let callbacks = [];let pending = false;function flushCallbacks...Vue中组件生命周期调用顺序说一组件的调用顺序都是先父后子,渲染完成的顺序是先子后父。组件的销毁操作是先父后子,销毁完成的顺序是先子后父。...方法进行响应式处理( defineReactive 方法就是 Vue 在初始化对象,给对象属性采用 Object.defineProperty 动态添加 getter 和 setter 的功能所调用方法...异步方法异步渲染最后一步,与JS事件循环联系紧密。...主要使用了宏任务微任务(setTimeout、promise那些),定义了一个异步方法,多次调用nextTick会将方法存入队列,通过异步方法清空当前队列。

62930

安卓开发的深度技术实战详解

在协程中,我们可以使用 suspend 关键字来定义挂起函数,它们可以在执行耗时操作挂起当前协程,等待操作完成后再恢复执行。...下面是一个简单的协程代码实例,它使用协程来实现异步操作: kotlinCopy codeclass MainActivity : AppCompatActivity() { override fun...} } 在上面的代码中,我们使用了 GlobalScope.launch 来启动一个新的协程,这个协程会调用 fetchData 函数来获取数据,并使用 withContext 来切换回主线程,更新 UI...insert 方法用来插入一个新的用户信息,getAllUsers 方法用来获取所有的用户信息。...当用户点击“添加用户”按钮,我们会启动一个新的协程来执行插入操作;当用户点击“显示用户”按钮,我们会启动一个新的协程来执行查询操作,并使用 withContext 切换回主线程,更新 UI 控件的内容

82430

课程上线 -“新手入门 : Windows Phone 8.1 开发”

XAML 设计 UI、事件处理、 页面导航、应用程序生命周期、模拟器使用MVVM (Model-View-ViewModel) 框架。...并知道针对不同的部署环境,它有几个不同的版本;其次,了解模拟器的功能,包括如何使用键盘快捷键来模拟输入;最后,了解缩放、旋转屏幕的方法,以及加速度传感器、GPS等功能的模拟。...同时,介绍三种方法来应对程序被挂起的数据和状态存储,另外,还包括应用程序再次启动恢复这些状态和数据的方法。...Module 18: MVVM框架-INotifyPropertyChanged Module Description: 本次课程主要介绍MVVM框架的概念,以及在MVVM中类实例的变化是如何同步到UI...Module 19: 异步编程 Module Description: 本次课程主要介绍了异步编程的概念,处理方法和适用环境。

1.4K80

干货 | 深入浅出Apple响应式框架Combine

Combine 作用是将异步事件通过组合事件处理操作符进行自定义处理。关注如何处理变化的值,正是响应式编程的核心。 Combine可以概述为一种声明式的函数响应式编程,简洁用下图表示: ?...我们通过URLSession内置的dataPublisher发送网络请求解析来说明用法,目的是为了说明Combine中的异步API以及在异步API中如何使用Operator。代码示例如下图: ?...1)使用Extension集成了publisher的通用方法,这样它的所有子控件都可以快速使用方法。...来给定一个简单的验证规则: 1)当用户输入登录名称大于等于6位; 2)密码和确认密码相等并且至少为6位; 3)用户同意隐私协议; 同时满足上述三个条件注册按钮才点击可用,我们使用Combine来实现注册校验逻辑...2)调用系统内置的assign方法将validToRegisterPublisher产生的value绑定到按钮的isEnabled属性上。 最终我们用Combine实现了MVVM模式的注册业务。

3.6K31
领券