如果在Button
中输入所需数据,我该如何停用TextBox
?
我将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}" />
答案 0 :(得分:2)
您只需要引发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
}
}
这就是它。
答案 1 :(得分:1)
DelegateCommand
在哪里定义?检查构造函数,它可能期望第二个参数是谓词,其结果将映射到ICommand
的{{1}}。
我假设CanExecute
是委托方法,如果string.Length&gt;返回true。您从View中传递的Command参数为0 ...尝试将其设置为始终返回false只是为了检查UI是否禁用该按钮。
编辑: 要将参数放入IsValid方法,请使用以下语法:
更改IsValid方法的语法以接受字符串参数,然后对您的DelegateCommand进行decalre,如:
this.IsValid
HTH:)