Code: Select all
public partial class VM: ReactiveObject
{
[Reactive]
public partial string? Property { get; set; }
}
< /code>
Die Ansicht sollte auf Eigenschaftenänderungen überwachen und etwas ausführen. Schwärmerlicher Teil ist, dass die Ansicht beim Navigieren zu/von bestimmten FlyoutItem
Code: Select all
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>
Hier ist kein Arbeitscode, der Abonnent erkennt keine Änderungen der Eigenschaften nach dem Entladen und Laden der Ansicht: < /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);
}
Code: Select all
Unload