我是 xamarin 的新手,我正在嘗試制作一個按鈕,它可以打開一個掃描儀表單,該表單掃描 MVVM 方法的 qr/條形碼。我試圖獲得結果并將其顯示到標簽中。這是我最好的客人,但它不起作用,希望有人可以提供幫助。
view:
<StackLayout>
<Label Text="{Binding CodigoQr}"/>
<zxing:ZXingScannerView x:Name="ucZXingScannerView"
IsScanning="True"
IsAnalyzing="True"
Result="{Binding CodigoQr}"
ScanResultCommand="{Binding ScanCommand }" />
</StackLayout>
ViewModel:
public class BarcodeScanVM : BaseViewModel
{
private Result _codigoQr;
public Result CodigoQr
{
get { return _codigoQr; }
set
{
_codigoQr = value;
OnPropertyChanged();
}
}
public AsyncCommand ScanCommand { get; set; }
public BarcodeScanVM()
{
ScanCommand = new AsyncCommand(OnScanResultCommand);
}
async Task OnScanResultCommand()
{
var text = CodigoQr;
}
}```
uj5u.com熱心網友回復:
您可以使用視圖的代碼隱藏進行操作。并將 VM 用于其他屬性
XAML:
<zxing:ZXingScannerView
IsAnalyzing="{Binding IsAnalyzing}"
IsScanning="{Binding IsScanning}"
OnScanResult="CameraScanner_OnScanResult" />
后面的代碼:
private void CameraScanner_OnScanResult(ZXing.Result result)
{
((MyViewModel)BindingContext).OnScanComplete(result.Text);
}
uj5u.com熱心網友回復:
更新:我試過這個,似乎掃描命令有效,但程式隨后停止。
ViewMode:
private Result bcScanResult;
public Result BcScanResult
{
get => bcScanResult;
set
{
if (value == bcScanResult)
return;
bcScanResult = value;
OnPropertyChanged();
}
}
public AsyncCommand BcScanCommand { get; }
public CodeScanVM()
{
BcScanCommand = new AsyncCommand(BcScanCommand_Call);
}
async Task BcScanCommand_Call()
{
await App.Current.MainPage.DisplayAlert("Item", "Code Async
Command:" Result, "OK");
return;
}
View:
<zxing:ZXingScannerView
x:Name="ScanView"
Result="{Binding BcScanResult}"
ScanResultCommand="{Binding BcScanCommand }"
IsScanning="True"
WidthRequest="300"
HeightRequest="300"/>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/393321.html
標籤:沙马林 xamarin.forms 中兴网
上一篇:如何設定導航堆疊的根
