Prism PubSubEvent Подписаться не работает с определенным кодом - PullRequest
0 голосов
/ 14 февраля 2019

Моя модель представления такова.

private string _currentModel;
public string CurrentModel
{
    get { return _currentModel; }
    set { SetProperty(ref _currentModel, value); }
}

public StatsViewModel(IEventAggregator eventAggregator, ITester tester)
{
        _eventAggregator = eventAggregator;

        _eventAggregator.GetEvent<PubSubEvent<ProductChanged>>().Subscribe(x =>
        {                
            CurrentModel = x.Product.Name;
            GetProductStats(x.Product.Id, tester.TesterInfo.Id);

       }, ThreadOption.UIThread);
}

Когда я запускаю это, код в подписке не выполняется.

Поэтому я оставил это простым и изменил на это.

_eventAggregator.GetEvent<PubSubEvent<ProductChanged>>().Subscribe(x =>
{
    Console.WriteLine("");

}, ThreadOption.UIThread);

Это отлично работает.Затем я начал добавлять исходный код обратно и добавил присваивание переменной CurrentModel, но оставил все просто:

_eventAggregator.GetEvent<PubSubEvent<ProductChanged>>().Subscribe(x =>
{
    CurrentModel = "Test";

}, ThreadOption.UIThread);

Это не работает.Есть идеи, почему это не работает?

ОБНОВЛЕНИЕ: Поэтому я изменил код и установил для параметра keepSubscriberReferenceAlive значение true.Кажется, теперь все работает.

_eventAggregator.GetEvent<PubSubEvent<ProductChanged>>().Subscribe(x =>
{                
      CurrentModel = x.Product.Name;
      GetProductStats(x.Product.Id, tester.TesterInfo.Id);

 }, ThreadOption.UIThread, true); // <----- added true

Любые идеи, почему добавление true устраняет проблему и почему ее не требуется во 2-м блоке кода вверху, только с Console.WriteLine?

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