启用按钮和 DelegateCommand
在 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}" />
How can I disable a Button
until the required data is entered in a TextBox
?
I'm binding a Button
to an ICommand
:
public ICommand LoginCommand
{
get
{
if (_loginCommand == null)
{
_loginCommand = new DelegateCommand<string>(this.Login, this.IsValid);
}
return _loginCommand;
}
}
in XAML like this:
<Button Style="{StaticResource LoginButton}" Content="Login" Command="{Binding LoginCommand}" CommandParameter="{Binding Text, ElementName=txtUserName}" />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您只需要引发重新查询事件。使用 DelegateCommand 这很容易。这是您的 ViewModel 的外观。
另外,如果没有令人信服的理由将您的属性设置为 DelegateCommand 类型,那么您应该这样做。
差不多就这样了。
You just need to raise the requery event. This is easy with a DelegateCommand. Here's how your ViewModel would look.
Also, if there's not a compelling reason to make your property of type DelegateCommand, then you should do so.
That's pretty much it.
DelegateCommand
在哪里定义的?检查构造函数,它可能期望第二个参数是谓词,其结果被映射到您的ICommand
的CanExecute
。我假设 this.IsValid 是一个委托方法,如果 string.Length > 则返回 true。 0 表示您从视图传递的命令参数...尝试将其设置为始终返回 false 只是为了检查 UI 是否禁用该按钮。
编辑:
要将参数获取到 IsValid 方法,请使用以下语法:
更改 IsValid 方法的语法以接受字符串参数,然后像这样 decalre 您的 DelegateCommand:
HTH :)
Where is
DelegateCommand
defined? Check the constructor, it is probably expecting the second parameter to be a predicate, the result of which gets mapped to yourICommand
'sCanExecute
.I assume that
this.IsValid
is a delegate method that returns true if the string.Length > 0 for the Command parameter you are passing from the View... Try setting it to always return false just to check the UI is disabling the button.EDIT:
To get the param into the IsValid method, use the following syntax:
change the syntax of the IsValid method to accept a string parameter, then decalre your DelegateCommand like:
HTH :)