Wpf 如果元素不支持命令,是否有在MVVM中实现命令的一般过程?

Wpf 如果元素不支持命令,是否有在MVVM中实现命令的一般过程?,wpf,events,mvvm,command,Wpf,Events,Mvvm,Command,如果元素不支持命令,是否有任何特定的方法在MVVM中实现命令。示例如何为TextBox?实现TextChanged_事件 您要做的是观察ViewModel的属性集方法中的更改 XAML的外观如下所示: <TextBox Text="{Binding Mode=TwoWay, Path=ViewModelProperty, UpdateSou

如果元素不支持命令,是否有任何特定的方法在MVVM中实现命令。示例如何为TextBox?实现TextChanged_事件

您要做的是观察ViewModel的属性集方法中的更改

XAML的外观如下所示:

        <TextBox Text="{Binding  Mode=TwoWay, 
                                 Path=ViewModelProperty,
                                 UpdateSourceTrigger=PropertyChanged}" />
在ViewModel类上,您可以定义如下属性:

    Private _ViewModelProperty As String
    Public Property ViewModelProperty As String
        Get
            Return _ViewModelProperty

        End Get
        Set(ByVal value As String)
            ' your test for "TextChanged" goes here
            If value <> _ViewModelProperty Then
                _ViewModelProperty = value
                OnViewModelPropertyChanged()
            End If
        End Set
    End Property
    Private Sub OnViewModelPropertyChanged()
        ' logic for handling changes goes here
    End Sub
这有一个副作用,即每次为ViewModelProperty指定新值时,都会执行OnViewModelPropertyChanged,但可以通过指定给backing字段而不是属性来避免这种情况


否则,您将实现ICommand接口,这些接口有自己的用途;这取决于你需要的东西有多复杂

无需使用TextChanged_事件或SelectionchangedEvent,因为您可以通过将它们绑定到ViewModel属性并等待它们的通知消息check MVVMLight的helper类来实现相同的功能

如果您迫切需要这些事件的处理程序,可以尝试使用


您可以查看此内容,了解有关messenger类的详细信息,以及了解有关EventToCommand行为的详细信息

如何使用组合框选择ChangeDevent。。。如果我想要删除的项目和添加的项目?为此,如果你想让你的MVVM模式保持纯粹,你必须开始实现ICommand。如果不需要,也就是说,如果没有UI设计器坚持XAML中没有代码隐藏,那么就在代码隐藏中实现SelectionChanged事件处理程序,并使用它调用ViewModel的方法。