【问题标题】:How to bind signature byte array on signature pad xamarin forms?如何在签名板 xamarin 表单上绑定签名字节数组?
【发布时间】:2016-07-06 11:21:34
【问题描述】:

我的 xamarin 表单应用中有一个签名板。用户在签名板上签名并移动到下一个屏幕。但是当用户返回签名板屏幕时,之前的签名会从签名板中删除。如何设置签名不应该删除,直到用户在应用程序的当前状态下执行?

当用户移动到下一个屏幕时,我将签名值保存为字节数组。那么我可以在签名板绑定这个字节数组来显示签名吗?

问候, 阿南德·杜贝

【问题讨论】:

    标签: xamarin.android xamarin.forms signaturepad


    【解决方案1】:

    由于这是 Xamarin Forms,我假设您使用的是 Allan Ritchie 的 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 的数组,它是一对浮点数,所以你需要反转你当前正在进行的任何转换。

    【讨论】:

    • 非常感谢安迪...它成功了。我需要问的另一个问题是,在放置签名板的屏幕上有多个控件。所以屏幕可以滚动。当我尝试在签名板上签名时,屏幕开始滚动。如果用户在签名板上签名,我如何停止屏幕滚动?
    • 嗨,安迪,你知道我如何获得签名板的触摸事件或签名板中的焦点事件如何工作吗?我正在尝试获取触摸事件,以便在用户触摸签名板时禁用滚动视图。但我没有得到任何可以工作的事件。如果您知道如何获取签名板的触摸事件,请更新?
    • 恐怕我不了解 SignaturePad 的内部结构。我确信有办法,但它可能需要您扩展 XamForms 视图以支持它。一种更简单的方法可能是为签名提供一个专用视图(因此无需滚动)并将其推送到导航堆栈。
    • 我有一张图片,如何在 Singature Pad 中加载图片。无法获取该图像的 Drawpoints 数组。然而,该图像是使用签名板创建的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2018-09-12
    • 2016-10-06
    相关资源
    最近更新 更多