Ich entwickle eine Xamarin.Forms-Anwendung mit Prism-Framework in einer MVVM-Architektur. Ich muss die Unterschrift vom Bildschirm abholen, also habe ich beschlossen, die SignaturePad-Bibliothek aufzunehmen. Mit NuGet habe ich Xamarin.Controls.SignaturePad und Xamarin.Controls.SignaturePad.Forms Pakete hinzugefügt. In Seitenlayout (mit XAML gebaut) Ich habe die Unterschrift Widget haben:Abbild von SignaturePadView mit MVVM-Architektur abrufen
<signature:SignaturePadView
x:Name="padView"
HeightRequest="130"
CaptionText="Sign"
CaptionTextColor="Black"
ClearText="Clean"
ClearTextColor="Black"
BackgroundColor="White"
SignatureLineColor="Black"
StrokeWidth="2"
StrokeColor="Black"
BindingContext="{Binding Sign, Mode=TwoWay}" />
Im Viewmodel das Widget-Bindung:
private SignaturePadView _sign;
public SignaturePadView Sign
{
get { return _sign; }
set { SetProperty(ref _sign, value); }
}
Im Ansichtsmodell Konstruktor:
_sign = new SignaturePadView();
Es gibt Auch eine Schaltfläche, in der Aktion dieser Schaltfläche muss ich das Zeichen Bild lesen und in der Datenbank speichern. Ich versuchte dieses:
Stream sig = await Sign.GetImageStreamAsync(SignatureImageFormat.Png);
var signatureMemoryStream = sig as MemoryStream;
byte[] data = signatureMemoryStream.ToArray();
All dieser Code wird im beweglichen Projekt geschrieben. Leider funktioniert es nicht, weil das sig-Objekt immer null ist. Ich denke, dass das Problem die Widgetbindung ist, aber ich bin mir nicht sicher.
Vielen Dank für Ihre Hilfe. Es funktioniert auch perfekt mit Prisma. Nur eine Klarstellung: SignatureView.Points ist ein IEnumerable und unterstützt den Count nicht. –
TeoVr81
@ TeoVr81 wenn ich mich erinnere, funktioniert Graf dank Linq – hugoterelle
Sie haben Recht, wenn ich System.Linq einschließen funktioniert es ohne andere Umgehungslösungen. Danke für alles! – TeoVr81