요소가 Command를 지원하지 않으면 MVVM에서 명령을 구현하는 특별한 방법이 있습니까? TextBox에 대한 TextChanged_event 구현 방법 예제?요소가 명령을 지원하지 않으면 MVVM에서 명령을 구현하는 일반적인 절차가 있습니까?
1
A
답변
0
TextChanged_event 또는 SelectionchangedEvent를 사용하면 ViewModel 속성에 바인딩하고 알림 메시지 (MVVMLight의 Messenger 도우미 클래스 확인)를 사용하여 동일한 결과를 얻을 수 있기 때문에 TextChanged_event 또는 SelectionchangedEvent를 사용할 필요가 없습니다. 당신이 필사적으로 해당 이벤트에 대한 핸들러가 필요한 경우
, 당신은 당신이에 대한 명확한 그림을 얻기 위해이 illustration 및 example program 메신저 클래스에 대한 자세한 내용 및 this example을 확인할 수 있습니다 RelayCommand
를 사용하는 EventToCommand 행동 도우미 클래스를 시도 할 수 있습니다 EventToCommand 동작
0
당신이하는 일은 ViewModel의 속성 설정 메소드에서 변경 사항을 관찰하는 것입니다.
<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()
을 실행하는 부작용이
XAML은 다음과 같을 것 ViewModelProperty
에 새 값을 지정하십시오. 그러나 속성 대신 보조 필드에 할당하여이를 피할 수 있습니다.
그렇지 않으면 사용중인 ICommand 인터페이스를 구현 중입니다. 그것은 당신이 얻는 것이 얼마나 복잡한 지에 달려 있습니다.
ComboBox SelectionchangedEvent는 어떨까요? 내가 제거 된 항목 및 추가 된 항목을 원한다면? –
MVVM 패턴을 "순수하게"유지하려면 ICommand를 구현해야합니다. XAML에 코드 숨김이 없다고 주장하는 UI 디자이너가 없다면 코드 숨김 부분에 SelectionChanged 이벤트 처리기를 구현하고이를 사용하여 ViewModel의 메소드. –