首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IDataErrorInfo禁用按钮

使用IDataErrorInfo禁用按钮
EN

Stack Overflow用户
提问于 2014-03-18 12:17:53
回答 2查看 1.2K关注 0票数 0

我找到了本教程,并且能够实现它。

当发生错误时,如何禁用按钮?

我在网上搜索了很多,但找不到一段类似我的代码。(是的,我知道关于这件事有无数条线索,但我就是不明白。)

下面是我当前的代码,它有点长:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-20 14:41:06

和这里的代码结合在一起完成了这个任务!最后:)

票数 1
EN

Stack Overflow用户

发布于 2014-03-18 13:26:17

如果要将按钮绑定到RelayCommand,可以通过设置CanExecute()函数返回False来禁用该按钮:

代码语言:javascript
复制
Public Function CanExecute(parameter As Object) As Boolean Implements ICommand.CanExecute
    Return False
End Function

RelayCommand并不意味着要以这种方式使用。我建议选择一个MVVM框架(例如MVVMLight),这样您就可以获得更好的RelayCommand实现。然后你可以像这样使用它:

代码语言:javascript
复制
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中使用它,如下所示:

代码语言:javascript
复制
Private _myCommand As RelayCommand = New RelayCommand()
Public ReadOnly Property MyCommand As ICommand
    Get
        Return Me._myCommand
    End Get
End Property
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22479159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档