我正在MVVM體系結構中使用Prism框架開發Xamarin.Forms應用程序。我需要從屏幕上收集簽名,所以我決定加入SignaturePad庫。使用NuGet,我包含了Xamarin.Controls.SignaturePad和Xamarin.Controls.SignaturePad.Forms包。 在頁面佈局(與XAML建)我有簽名控件:使用MVVM體系結構從SignaturePadView中檢索圖像
<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}" />
在視圖模型的部件結合:
private SignaturePadView _sign;
public SignaturePadView Sign
{
get { return _sign; }
set { SetProperty(ref _sign, value); }
}
在視圖模型構造:
_sign = new SignaturePadView();
有也是一個按鈕,在這個按鈕的動作中,我需要讀取符號圖像並將其保存到數據庫中。我試過這個:
Stream sig = await Sign.GetImageStreamAsync(SignatureImageFormat.Png);
var signatureMemoryStream = sig as MemoryStream;
byte[] data = signatureMemoryStream.ToArray();
所有這些代碼都寫在便攜式項目中。 不幸的是,它不起作用,因爲sig對象始終爲空。我認爲問題在於小部件綁定,但我不確定。
感謝您的幫助。它也適用於Prism。只是澄清:SignatureView.Points是一個IEnumerable並不支持計數。 –
TeoVr81
@ TeoVr81如果我記得,伯爵的作品感謝林格 – hugoterelle
你是對的,如果我包括System.Linq它沒有其他解決方法工作正常。謝謝大家! – TeoVr81