代码之家  ›  专栏  ›  技术社区  ›  ebattulga

命令绑定问题。如何启用命令按钮

  •  3
  • ebattulga  · 技术社区  · 14 年前

    我的代码在这里>>

    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 Apps With The Model-View-ViewModel Design Pattern

    我的代码有什么问题?

    请修复我的命令绑定!

    1 回复  |  直到 14 年前
        1
  •  1
  •   ebattulga    14 年前

    我自己找到的。

    必须调用 CommandManager.InvalidateRequerySuggested(); 更改属性后的函数

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