Ich habe gerade ReactiveUI zu einer vorhandenen Codebasis hinzugefügt. Natürlich, für die erste Kontrolle habe ich es versucht mit einem Haken. Ich benutze es mit einem UserControl in einem TabControl eingebettet. Der Code sieht etwa so aus:Wie implementiere ich IActivationForViewFetcher für ein Kind UserControl?
public partial class TabPageControl : UserControl, IViewFor<TestViewModel>
{
public TabPageControl()
{
InitializeComponent();
ViewModel = new TestViewModel();
this.WhenActivated(dispose =>
{
dispose(this.Bind(...));
dispose(this.BindCommand(...));
});
}
}
Wenn ich die app laufen, bekomme ich folgende Fehlermeldung:
Sie wissen nicht, wie zu erkennen, wenn TabPageControl aktiviert/deaktiviert ist, können Sie implementieren müssen IActivationForViewFetcher
Also, wie implementiere ich IActivationForViewFetcher? Ich bin nicht sicher, was ich mit GetAffinityForView
tun soll. Ich gehe davon aus, in GetActivationForView
Ich muss überprüfen, ob das UserControl das derzeit in der TabControl sichtbar ist?
Ich habe das gleiche Problem für mein Xamarin Droid-Projekt. Wenn ich 'this.WhenActivated' rufe, erhalte ich dieselbe Fehlermeldung, die Sie oben beschrieben haben. In meinem Xamarin iOS-Projekt funktioniert jedoch alles gut. Kannst du etwas ausführlicher erklären, wie du das Problem gelöst hast? – jfmg
In meinem Fall (aus dem Speicher) musste ich auf die ReactiveUI-Assemblies in meiner Hauptbaugruppe (sowie den Bibliotheken) verweisen. Dies ruft dann 'ReactiveUI.Winforms.Registrations' auf, das die Standard-Handler einrichtet. – Mitkins
Da ich Winforms verwende, kann ich' WhenActivated' trotzdem nicht verwenden (es sei denn, das wurde kürzlich geändert). Also habe ich vielleicht das Problem vermieden, vor dem Sie stehen – Mitkins