Xamarin - Device.BeginInvokeOnMainThread 中的函数未正确调用



我正在 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时,新视图未添加到页面,导致仍会看到旧数据。

最新更新