Почему подписчик WhenAnyValue не запускается при изменениях имущества после повторной подписки?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему подписчик WhenAnyValue не запускается при изменениях имущества после повторной подписки?

Сообщение Anonymous »

У меня есть приложение Maui с Reactiveui.maui и reactiveui.sourcegenerators пакеты.

Код: Выделить всё

public partial class VM: ReactiveObject
{
[Reactive]
public partial string? Property { get; set; }
}
< /code>
Просмотр должен контролировать изменения имущества и что -то сделать. Хитрой является то, что представление будет загружено/выгружается при навигации по/из определенного FlyoutiTem 
, содержащий представление. Таким образом, неопознание важно. Разгрузка, а затем снова загружать представление - подписка больше не работает.

Код: Выделить всё

VM? vm;

public View()
{
Loaded += (s, e) =>
{
vm = BindingContext as VM;
vm?.PropertyChanged += VM_PropertyChanged;
};
Unloaded += (s, e) =>
{
vm?.PropertyChanged -= VM_PropertyChanged;
};
}

void VM_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
... // breakpoint here is always hit
}
< /code>
Здесь не является рабочего кода, абонент не обнаруживает изменения свойства после снова разгрузки и загрузки представления: < /p>
readonly CompositeDisposable disposables = [];

public View()
{
Loaded += (s, e) => Init();
Unloaded += (s, e) => disposables.Dispose();
}

void Init()
{
if (BindingContext is not VM vm)
return;

vm.WhenAnyValue(o => o.Property)
.Subscribe(property =>
{
// problem: not triggered on property changes after re-loading view
})
.DisposeWith(disposables);
}

Почему при реактивном подходе изменения свойства больше не обнаруживаются после выгрузки представления и снова его загрузки?
Нагрузка / События работают как часы (проверяются с точками останова). Абонент запускается один раз, когда init называется как ожидалось.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... s-after-re
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»