我正在 Xamarin 中创建一个 QR 码,我正在调用Device.BeginInvokeOnMainThread
内部 QR 码的生成,以便每次添加新输入时都可以动态更新 QR 码。
Device.BeginInvokeOnMainThread(async () =>
{
QRCodeView.IsVisible = true;
QRCodeView = null;
QRCodeView = new ZXingBarcodeImageView
{
BarcodeFormat = BarcodeFormat.QR_CODE,
BarcodeOptions = new QrCodeEncodingOptions
{
Height = 150,
Width = 150,
PureBarcode = true
},
BarcodeValue = await SetQrContent(),
VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalOptions = LayoutOptions.CenterAndExpand
};
});
在我的函数SetQrContent()
中,QR 码被传递给新值。然而我认为调用这个函数为时已晚,因为新二维码的值设置不正确,导致我的二维码在输入更改时不会更改。
我用错BeginInvokeOnMainThread
吗?
尝试仅在更改 QrContent 时设置BarcodeValue
。
Device.BeginInvokeOnMainThread(async () =>
{
// Don't reset the view, only reset the value on the barcode
QRCodeView.BarcodeValue = await SetQrContent();
});
当控件已添加到页面时,仅更改视图的属性,而不创建新视图。创建新ZXingBarcodeImageView
时,新视图未添加到页面,导致仍会看到旧数据。