Ich habe eine Ansicht mit einem Bild, das eine Tippgeste auf einen Befehl gebunden hat:Kann ich in Xamarin Forms auf gebundenes Element aus dem Befehl zugreifen?
VIEW:
var clickableImage = new Image(...);
var imageTap = new TapGestureRecognizer();
clickableImage.GestureRecognizers.Add(imageTap);
imageTap.SetBinding<MyViewModel>(TapGestureRecognizer.CommandProperty, _ => _.MyCommand);
Der Befehl ist in der View-Modell wie folgt aus:
VIEW MODELL
public ICommand MyCommand
{
get
{
return new Command((parameters) =>
{
// Can I access imageTap element here?
});
}
}
Gibt es einen Weg zu acce ss das ImageTap-Element aus dem Befehl, an den es gebunden ist?
Wer auch immer downvoted - bitte sagen Sie mir warum. Ich lerne nichts, wenn du ohne Erklärung runterlegst. – jbyrd
Andere haben Lösungen gepostet, wie Sie dies mit dem Befehlsparameter erreichen können. Ich werde nur hinzufügen, dass Sie wahrscheinlich überdenken sollten, warum Sie das überhaupt tun. Der Befehl befindet sich innerhalb des ViewModel, das ViewModel sollte kein Wissen über Ihre Ansicht haben, nur umgekehrt. MVVM hat eine saubere Trennung dieser Schichten und Sie laufen überall herum, wenn Sie Verweise auf das Bild übergeben oder vom Xamarin.Forms-Namespace überhaupt im Ansichtsmodell – irreal
@irreal abhängen - also habe ich ein benutzerdefiniertes Element (im Grunde einen Block mit einem Symbol und verschiedenen Textteilen), die 4 Variationen hat. Basierend auf der Variation möchte ich, dass der Befehl etwas unterschiedliche Dinge tut - daher muss der Befehl wissen, welche Variation mein benutzerdefiniertes Element ist. Indem ich das Element in den Befehlsparameter übergebe, kann ich das tun. Macht das jetzt Sinn, oder meinst du immer noch, dass mein Ansatz problematisch ist? – jbyrd