我可以在不使用 InvalidateRequerySuggested() 的情况下在 MediaCommands 上引发 CanExecute 吗?

发布于 2024-11-10 02:57:39 字数 432 浏览 0 评论 0原文

我有一些自定义 CommandBindings 确定各种 MediaCommands(播放、暂停等)的 CanExecute 状态。我想在某些时刻触发调用 CanExecute 处理程序。然而,我能弄清楚如何做到这一点的唯一方法是使用 InvalidateRequerySuggested(),这会导致所有内容重新计算其 CanExecute。这太过分了,而且速度很慢,所以我想找出一种更好、更有针对性的方法来更新这些命令上的 CanExecute。

看起来如果我使用 DelegateCommand,我可以通过调用 RaiseCanExecuteChanged 来完成此操作,但如果可能的话,我想使用现有的 MediaCommands 来完成此操作。

如果没有任何直接的方法可以做到这一点,是否有任何黑客的解决方法?我注意到在内部重新计算 CanExecute 有一些智能(比如第一次显示 UIElements 等)

I have some custom CommandBindings that determine the CanExecute status of various MediaCommands (Play, Pause, etc). I'd like to trigger the CanExecute handler to be called at certain points. However, the only way I can figure out how to do this is with InvalidateRequerySuggested(), which causes everything to recalculate its CanExecute. That's overkill and slow, so I'd like to figure out a better, more targeted way of updating CanExecute on these Commands.

It looks like if I used a DelegateCommand that I could do this by calling RaiseCanExecuteChanged, but I'd like to do it with the existing MediaCommands if possible.

If there aren't any direct ways of doing this, are there any hacky workarounds even? I've noticed that there is some intelligence at recalculating CanExecute internally (like showing UIElements for the first time, etc.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文