Als weiteren Schritt, der versucht, Xamarin zu lernen, arbeite ich an einem Testprojekt zum Zeichnen von Formen in einem Xamarin-Multiplattform-Projekt (vollständiger Github-Code here).ViewRenderer in Xamarin überschreiben
Das Projekt versucht, dieses andere GitHub-Projekt (Link here) zu reproduzieren, aber stattdessen ein neues leeres Xamarin Forms-Projekt zu verwenden. Ich versuche dann, die Teile des ursprünglichen Codes zusammenzusetzen und sie zu verstehen.
Fokussierung auf Android, nach dem Zusammensetzen des Codes werden die Formen nicht korrekt gezeichnet. Ich versuche, das zu beheben, und ich denke, es kommt darauf an:
Ein Breakpoint in OnElementChanged
ist im ursprünglichen Projekt erreicht (siehe Quelldatei here). Aber ein Breakpoint in OnElementChanged
wird in meinem neuen Projekt nicht erreicht (siehe Quelldatei here).
SharpRenderer
ist in beiden .Droid und .iOS-Projekte vorhanden, aber ich kann nicht verstehen, wie der Code miteinander verbunden ist. Ich finde keine sinnvollen Unterschiede zwischen beiden Codes, die mir helfen zu verstehen, was passiert.
SharpRenderer
Code, der in einem Fall, aber nicht in dem anderen erreicht:
public class ShapeRenderer : ViewRenderer<ShapeView, Shape>
{
public ShapeRenderer()
{
}
protected override void OnElementChanged(ElementChangedEventArgs<ShapeView> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || this.Element == null)
return;
SetNativeControl(new Shape(Resources.DisplayMetrics.Density, Context)
{
ShapeView = Element
});
}
}
"_Siehe Quelldatei here_" wird irgendwann eine defekte Verbindung sein. Bitte fügen Sie alle erforderlichen und relevanten Informationen direkt in der Frage hinzu. – Mackan
Ich habe den 'ShapeRenderer'-Code aus dem .Droid-Projekt hinzugefügt. Bitte lassen Sie mich wissen, ob ein anderer Code in der Hauptpost notwendig ist (da der Fehler in der Interaktion zwischen den Projekten liegt, so ist es für mich schwierig zu bestimmen, welche Teile notwendig sind und welche Teile nicht). –
Sie fehlen diese Codezeile: '[assembly: ExportRenderer (typeof (ShapeView), typeof (ShapeRenderer))]'. Es geht über den Namensraum hinaus und ist wichtig. 'ExportRenderer'-Warnungen Xamarin.Forms verwendet Ihre Klasse zum Rendern der angegebenen Ansichtsklasse, andernfalls versucht Xamarin.Forms, einen Standard-Renderer zu verwenden. – dylansturg