CommandBinding вопрос. Как включить командную кнопку - PullRequest
3 голосов
/ 03 октября 2010

Мой код здесь >>

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-адреса, нажмите кнопку включения, чтобы включить или отключить. Но кнопка всегда отключена.

Я получаю класс RelayCommand из Приложения WPF с шаблоном проектирования Model-View-ViewModel

Что не так в моем коде?

Пожалуйста, исправьте привязку моей команды!

1 Ответ

1 голос
/ 04 октября 2010

Я нашел это сам.

Должен вызывать функцию CommandManager.InvalidateRequerySuggested(); после изменения свойства

public string Url
        {
            get {

                return addressBar;
            }
            set { addressBar = value; OnPropertyChanged("Url"); 
                  CommandManager.InvalidateRequerySuggested();
            }
        }
...