在TextBox中输入所需数据之前,如何禁用Button
我正在将Button绑定到ICommand
public ICommand LoginCommand
{
get
{
if (_loginCommand == null)
{
_loginCommand = new DelegateCommand<string>(this.Login, this.IsValid);
}
return _loginCommand;
}
}在XAML中,如下所示:
<Button Style="{StaticResource LoginButton}" Content="Login" Command="{Binding LoginCommand}" CommandParameter="{Binding Text, ElementName=txtUserName}" />发布于 2009-11-05 08:01:42
您只需要引发requery事件。使用DelegateCommand很容易做到这一点。这是你的ViewModel应该是什么样子。
此外,如果没有令人信服的理由将您的属性设置为DelegateCommand类型,那么您应该这样做。
public class MyViewModel : ViewModel
{
private string _myTextField;
public string MyTextField
{
get { return _myTextField; }
set
{
_myTextField = value;
OnPropertyChanged("MyTextField");
//Here's the magic
LoginCommand.RaiseCanExecuteChanged();
}
}
public DelegateCommand<string> LoginCommand { get; set; }
public MyViewModel()
{
LoginCommand = new DelegateCommand<string>(Login, CanLogin);
}
public bool CanLogin(string text)
{
return !string.IsNullOrEmpty(text);
}
public void Login(string text)
{
//login logic
}
}差不多就是这样。
发布于 2009-10-19 17:44:15
DelegateCommand在哪里定义?检查构造函数,它可能期望第二个参数是一个谓词,其结果被映射到ICommand的CanExecute。
我假设this.IsValid是一个委托方法,如果从视图传递的命令参数的string.Length >0,则该方法返回true…尝试将其设置为always return false,以检查UI是否禁用该按钮。
编辑:要将参数放入IsValid方法,请使用以下语法:
更改IsValid方法的语法以接受字符串参数,然后按如下方式取消DelegateCommand:
_loginCommand = new DelegateCommand<string>(this.Login, (param) => this.IsValid(param));HTH :)
https://stackoverflow.com/questions/1587665
复制相似问题