RaisePropertyChanged‹T›(string propertyName, T oldValue, T newValue, bool широковещательная передача)

Я пытался заставить работать RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast), но не смог заставить его работать.

Я не реализую его в каком-либо сценарии реального мира, а просто изучаю его. Если поднимаю вещание обычным способом только тогда работает Messenger.Default.Send<PropertyUpdateeMessage>(new PropertyUpdateeMessage("test"));

Так что мне интересно, чего мне не хватает, чтобы использовать RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast)

Заранее спасибо.

С уважением Раки


person user383663    schedule 05.07.2010    source источник


Ответы (1)


Это тоже заняло у меня немного времени, чтобы понять. По сути, вы должны согласовывать сообщение, которое вы регистрируете, с сообщением, которое вы отправляете, но об этом не так много документации.

У меня есть полный рабочий образец здесь, но вот информация в в двух словах:

Во-первых, зарегистрируйтесь для PropertyChangedMessage, указав тип, который идет на шине

Messenger.Default.Register<PropertyChangedMessage<ObjectICareAbout>>(
    this,
    (action) => DispatcherHelper.CheckBeginInvokeOnUI(
                 () => DoWorkOnObject(action.NewValue) 
                )
);

Затем отправьте сообщение, когда свойство основной виртуальной машины изменится.

RaisePropertyChanged(SelectedItemPropertyName, oldValue, value, true);

Есть несколько вариантов устранения неоднозначности, которые вы можете использовать при отправке сообщения и регистрации, чтобы прослушать его, но это то, как работают основы.

person Chris Koenig    schedule 05.07.2010
comment
Спасибо, Крис. Это мне очень помогло :) - person user383663; 06.07.2010
comment
Фантастика! Если вы не против отметить этот ответ как принятый, это действительно поможет моей репутации. - person Chris Koenig; 06.07.2010