2016-07-06 30 views
2

xamarinフォームアプリに署名付きのパッドがあります。ユーザーがサインパッドにサインし、次の画面に移動します。しかし、ユーザーが署名パッド画面に戻ると、以前の署名が署名パッドから削除されます。ユーザーがアプリの現在の状態で行うまで、署名を削除しないように設定する方法を教えてください。署名パッドのxamarinフォームに署名バイト配列をバインドする方法は?

ユーザーが次の画面に移動すると、署名値がバイト配列として保存されます。では、このバイト配列を署名パッドにバインドして、署名を表示できますか?

よろしく、 アナンドDubeyさん

答えて

2

これはXamarinフォームですので、私はあなたがアラン・リッチーのAcr.XamForms.SignaturePadクラスを使用していると仮定しています。

SignaturePadViewクラスは、ビューにシグネチャデータをロードできるメソッドLoadDrawPointsを公開しています。これは方法ですので、あなたは本当にそれにデータバインドすることはできませんが、署名をロードするためのホスティングビューにコードを追加することができます

// NOTE: The below assumes that 
// A) You're using MVVM (as you should :)) 
// B) The ViewModel class name is MyViewModelClassName (change appropriately) 
// C) The property on the VM that exposes the signature points is named SignaturePoints (change appropriately) 

protected override OnAppearing() { 
    LoadSignature(); 
} 

protected override OnBindingContextChanged() { 
    LoadSignature(); 
} 

private void LoadSignature() { 
    var vm = this.BindingContext as MyViewModelClassName; 
    if (vm != null && vm.SignaturePoints != null) { 
     this.signaturePadView.LoadDrawPoints(vm.SignaturePoints); 
    } 
} 

最後に、あなたがバイトとして署名を保存していることに言及しますアレイ;上記のコードでは、浮動小数点のペアであるDrawPointの配列であると想定しているため、現在行っている変換を逆にする必要があります。

+0

ありがとうございました。アンディ...ありがとうございました。署名パッドが置かれているスクリーンに複数のコントロールがあることをもう1つ質問しておきます。したがって、画面はスクロール可能になります。サインパッドにサインインしようとすると、画面がスクロールし始めます。ユーザーが署名付きパッドに署名している場合、画面のスクロールを停止する方法はありますか? – anand

+0

こんにちはAndy、署名パッドのタッチイベントや署名付きパッドのイベント処理の仕組みを知っていますか?私はユーザーが署名パッドに触れるときにスクロールビューを無効にできるようにタッチイベントを取得しようとしています。しかし、私は働くことのできる出来事はない。署名パッドのタッチイベントをどのように取得できるか分かっている場合は、更新してください。 – anand

+0

私はSignaturePadの内部にいないのではないかと心配しています。方法はありますが、XamFormsビューを拡張してサポートする必要があります。より簡単なアプローチは、シグネチャ専用のビューを用意して(したがってスクロールする必要がない)、ナビゲーションスタックにプッシュすることです。 –

関連する問題