我的代码在这里>>
public class Player:INotifyPropertyChanging { string addressBar; public string Url { get { return addressBar; } set { addressBar = value; OnPropertyChanged("Url"); } } public Regex regVillage = new Regex(@"\?doc=\d+&sys=[a-zA-Z0-9]{2}"); RelayCommand _AddAttackTask; public ICommand AddAttackTask { get { if (_AddAttackTask == null) { _AddAttackTask = new RelayCommand(param => { }, param => this.CanAttack); } return _AddAttackTask; } } public Boolean CanAttack { get{ if (Url == null) return false; return regVillage.IsMatch(Url); } } }
在XAML上,我有文本框和按钮。文本框绑定者 url ,按钮绑定者 AddAttackTask . 当我改变文本框的值时,url改变了。主要目标是当改变url时,按钮带到启用或禁用。但按钮总是被禁用。
url
AddAttackTask
我要去上Relaycommand课 WPF Apps With The Model-View-ViewModel Design Pattern
我的代码有什么问题?
请修复我的命令绑定!
我自己找到的。
必须调用 CommandManager.InvalidateRequerySuggested(); 更改属性后的函数
CommandManager.InvalidateRequerySuggested();
public string Url { get { return addressBar; } set { addressBar = value; OnPropertyChanged("Url"); CommandManager.InvalidateRequerySuggested(); } }