Существует ли какая-либо общая процедура для реализации команды в MVVM, если элемент не поддерживает команду? - PullRequest
1 голос
/ 08 июля 2010

Есть ли какой-либо конкретный способ реализовать команду в MVVM, если элемент не поддерживает Command. Пример того, как реализовать TextChanged_event для TextBox?

Ответы [ 2 ]

0 голосов
/ 08 июля 2010

Нет необходимости использовать TextChanged_event или SelectionchangedEvent, поскольку вы можете добиться того же, связав их со своими свойствами ViewModel и ожидая их уведомляющего сообщения (проверьте вспомогательный класс Messenger MVVMLight).

Если вам крайне необходим обработчик для этих событий, вы можете попробовать класс поддержки поведения EventToCommand , который использует RelayCommand

Вы можете проверить это illustration и пример программы для получения подробной информации о классе мессенджера и этот пример для получения четкого представления о поведении EventToCommand

0 голосов
/ 08 июля 2010

Что вы делаете, это наблюдаете за изменением в методе набора свойств вашего 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

Это побочный эффект выполнения OnViewModelPropertyChanged() каждый раз, когда вы назначаете новое значение для ViewModelProperty, но этого можно избежать, назначив вспомогательное поле вместо свойства.

В противном случае вы реализуете интерфейсы ICommand, которые их используют; это зависит от того, насколько сложными вам нужны вещи, чтобы получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...