如何使用MVVM模式“禁用”WPF中的按钮?
我正在努力掌握WPF和MVVM,并且取得了很好的进展。 WPF和MVVM方面的进展顺利。
但是,XAML和数据绑定方面是另一个故事:)
我如何“禁用”按钮?
例如,我的视图模型中有一个CanClose属性,用于确定当前是否可以关闭应用程序。 如果一个工作线程没有做某事,那么这个属性设置为false,我想要灰显按钮,或者通过某种绑定以某种方式在视觉上禁用关闭按钮。
我该怎么做呢?
谢谢!
编辑 –
太糟糕了我只能接受一个答案。
这两个答案对我帮助很大。 在Kent的post中,他更进一步解释了为什么要在应用程序中实现命令基础结构,而不是按照我提出的方式禁用按钮:
如何使用MVVM模式“禁用”WPF中的按钮?
以及我原来问题的答案:
如何使用MVVM模式“禁用”WPF中的按钮?
通过使用命令模式。 在您的视图模型中:
public class MyViewModel : ViewModel { private readonly ICommand someCommand; public MyViewModel() { this.someCommand = new DelegateCommand(this.DoSomething, this.CanDoSomething); } public ICommand SomeCommand { get { return this.someCommand; } } private void DoSomething(object state) { // do something here } private bool CanDoSomething(object state) { // return true/false here is enabled/disable button } }
在你的XAML中:
阅读这篇文章 ,了解有关DelegateCommand
更多信息。
只需将Button的IsEnabled属性绑定到CanClose即可:
如果返回ICommand的CanExecute值为false,则将禁用Button。 因此,无论您的按钮绑定了什么命令,当您要禁用它时,查看是否可以返回CanExecute值false。
这也有效:
查看 :
ViewModel :
上述就是C#学习教程:如何使用MVVM模式“禁用”WPF中的按钮?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
private bool _btnEnabled; public bool btnEnabled { get { return _btnEnabled; } set { if (_btnEnabled != value) { _btnEnabled = value; OnPropertyChanged(); } } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1027820.html