2010-07-08 31 views

回答

0

没有必要使用TextChanged_event或SelectionchangedEvent,因为您可以使用绑定到您的ViewModel属性并等待它们的通知消息(请检查MVVMLight的助手类)来实现相同的目的。

如果你迫切需要对这些事件的处理程序,你可以试试它采用RelayCommand

EventToCommand行为的辅助类你可以看看这个illustrationexample program对信使类的细节和this example上得到清晰的画面EventToCommand行为

0

你所做的就是观察ViewModel属性集方法的变化。

的XAML会是这个样子:

 <TextBox Text="{Binding Mode=TwoWay, 
           Path=ViewModelProperty, 
           UpdateSourceTrigger=PropertyChanged}" /> 

而且在视图模型类,你定义一个属性是这样的:

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 

这有每次执行OnViewModelPropertyChanged()您的副作用为ViewModelProperty分配一个新值,但您可以通过分配到后台字段而不是属性来避免这种情况。

否则,你正在实现ICommand接口,它们有用;这取决于你需要获得的东西有多复杂。

+0

ComboBox SelectionchangedEvent如果我想要删除的项目和添加项目? – 2010-07-08 04:40:41

+0

为此,如果您希望MVVM模式保持“纯粹”,则必须实施ICommand。 如果你没有这个需要,也就是说,如果你没有UI设计者坚持在XAML中没有代码隐藏,那么在你的代码隐藏中实现一个SelectionChanged事件处理器,并用它来调用ViewModel的方法。 – 2010-07-08 16:51:20