我找到了本教程,并且能够实现它。
当发生错误时,如何禁用按钮?
我在网上搜索了很多,但找不到一段类似我的代码。(是的,我知道关于这件事有无数条线索,但我就是不明白。)
下面是我当前的代码,它有点长:
Public Class GradeVm
Implements IDataErrorInfo
Public Interface IDataErrorInfo
Default ReadOnly Property Item(columnName As String) As String
ReadOnly Property [Error]() As String
End Interface
#Region "Properties"
Property Grade As Integer
Property Adjust As Integer
#End Region
Public ReadOnly Property [Error] As String Implements IDataErrorInfo.Error
Get
Return "Error"
End Get
End Property
Default Public ReadOnly Property Item(columnName As String) As String Implements IDataErrorInfo.Item
Get
Select Case columnName
Case "Grade"
If IsNumeric(Me.Grade) = False Then
Return [Error]
End If
Case "Adjust"
If IsNumeric(Me.Adjust) = False Then
Return [Error]
End If
End Select
Return ""
End Get
End Property
End Class发布于 2014-03-20 14:41:06
这和这里的代码结合在一起完成了这个任务!最后:)
发布于 2014-03-18 13:26:17
如果要将按钮绑定到RelayCommand,可以通过设置CanExecute()函数返回False来禁用该按钮:
Public Function CanExecute(parameter As Object) As Boolean Implements ICommand.CanExecute
Return False
End Function但RelayCommand并不意味着要以这种方式使用。我建议选择一个MVVM框架(例如MVVMLight),这样您就可以获得更好的RelayCommand实现。然后你可以像这样使用它:
Private _myCommand As RelayCommand = New RelayCommand(Me.ExecuteCommand, Me.CanExecuteCommand)
Public ReadOnly Property MyCommand As ICommand
Get
Return Me._myCommand
End Get
End Property
Private Sub ExecuteCommand()
......
End Sub
Private Function CanExecuteCommand() As Boolean
'do logic to disable (return false) or enable (return true) button
'based on specific criteria
'just for example, disable the button forever :
Return False
End Function更新:
为什么要删除RelayCommand实现?第一种方法是在最初的文章中使用RelayCommand,但是将CanExecute()函数的返回值改为False而不是True。然后,您可以在ViewModel中使用它,如下所示:
Private _myCommand As RelayCommand = New RelayCommand()
Public ReadOnly Property MyCommand As ICommand
Get
Return Me._myCommand
End Get
End Propertyhttps://stackoverflow.com/questions/22479159
复制相似问题