CommandBinding问题.如何启用命令按钮 [英] CommandBinding question. How to enable command button

查看:52
本文介绍了CommandBinding问题.如何启用命令按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码在这里>>

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 绑定.当我更改文本框值时,网址已更改.主要目标是在更改网址时,启用或禁用按钮.但是按钮始终处于禁用状态.

On the xaml, i have textbox and button. Textbox binded by url, button binded by AddAttackTask. When i change textbox value,Url changed.Main target is When changing url, button bring to enable or disable. But button always disabled.

我正在从

I'm getting RelayCommand class from WPF Apps With The Model-View-ViewModel Design Pattern

我的代码有什么问题?

请修复我的命令绑定!

推荐答案

我自己找到了它.

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

Must call CommandManager.InvalidateRequerySuggested(); function after changing property

public string Url
        {
            get {

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

这篇关于CommandBinding问题.如何启用命令按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆