【发布时间】:2010-10-03 09:38:39
【问题描述】:
我的代码在这里>>
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 时,按钮启用或禁用。但按钮总是禁用。
我正在从WPF Apps With The Model-View-ViewModel Design Pattern 获得 RelayCommand 类
我的代码有什么问题?
请修复我的命令绑定!
【问题讨论】:
-
首先将
CanAttack改为简单的return (Url != null)。这样你就确定它不是你的正则表达式。或者使用调试器来检查同样的事情。 -
正则表达式正确。问题是 url 更改后,CanExecute 未引发。
-
您在独立于 URL 的用户控件中有按钮吗?
标签: wpf binding commandbinding