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