xamarin .net maui,如何使按钮的命令即使其元素为Enabled=false也可执行

xienkqul  于 2023-05-04  发布在  .NET
关注(0)|答案(1)|浏览(151)

我想让用户知道为什么按钮是禁用的短消息时,用户点击它。
一种方法是通过自定义样式来模拟按钮禁用状态,但问题是它可能与系统样式不同,系统样式可能会因平台和操作系统版本等而变化。此外,如果它的复合多元素自定义按钮,它使事情真的很复杂。所以不要走这条路。
我的期望是,通过将CanExecute设置为始终返回true的delegate,我可以让命令无论如何都可以运行。
示例(借助mvvm framework

[RelayCommand(CanExecute = nameof(AlwaysCanExecute))]
private void MyCommand()
{
    ...
}

private bool AlwaysCanExecute() => true;

但它不工作:AlwaysCanExecuteMyCommand都只在命令绑定的元素被启用时运行,一旦我禁用它(Enabled=“False”),它甚至会尝试运行AlwaysCanExecute。这是它应该如何工作还是我错过了什么?
如果是设计的话,有没有什么方法可以做到这一点,而不需要自定义样式来模仿禁用的样式?

ua4mk5z4

ua4mk5z41#

我在这里看到了两个潜在的解决方案。
第一个,类似于帖子上的评论:你可以在一个网格中有一个你的按钮,第二个“不可见样式”按钮位于你当前的按钮之上。第二个按钮显示您的消息。无需使用Z索引;你可以简单地将这个按钮的可见性绑定到一个属性,这个属性与你当前按钮的IsEnabled相反。这样,当启用当前按钮时,此按钮不会干扰。
第二种解决方案是利用开箱即用的Tooltips。这取决于平台的不同而呈现不同。在所有情况下,它都有一个原生的外观,但最终,它将归结为您希望如何设计这种体验。

相关问题