6

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 オブジェクトは常に null であるため、機能しません。問題はウィジェットのバインディングだと思いますが、よくわかりません。

4

1 に答える 1