我正在 MVVM 架构中使用 Prism 框架开发 Xamarin.Forms 应用程序。我需要从屏幕上收集签名,所以我决定包含 SignaturePad 库。在 NuGet 中,我包含了 Xamarin.Controls.SignaturePad 和 Xamarin.Controls.SignaturePad.Forms 包。在页面布局(使用 XAML 构建)中,我有签名小部件:
<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}" />
在 ViewModel 中小部件绑定:
private SignaturePadView _sign;
public SignaturePadView Sign
{
get { return _sign; }
set { SetProperty(ref _sign, value); }
}
在 ViewModel 构造函数中:
_sign = new SignaturePadView();
还有一个按钮,在这个按钮的动作中我需要读取标志图像并将其保存到数据库中。我试过这个:
Stream sig = await Sign.GetImageStreamAsync(SignatureImageFormat.Png);
var signatureMemoryStream = sig as MemoryStream;
byte[] data = signatureMemoryStream.ToArray();
所有这些代码都写在可移植项目中。不幸的是,它不起作用,因为 sig 对象始终为空。我认为问题在于小部件绑定,但我不确定。