我正在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码被传递了新值。 但是,我认为此函数的调用为时已晚,因为新QR码的值未正确设置,导致输入更改时我的QR码不会改变。
我使用BeginInvokeOnMainThread
错了吗?
答案 0 :(得分:1)
更改QrContent时,仅尝试设置BarcodeValue
。
Device.BeginInvokeOnMainThread(async () =>
{
// Don't reset the view, only reset the value on the barcode
QRCodeView.BarcodeValue = await SetQrContent();
});
将控件添加到页面后,仅更改视图的属性,而不创建新视图。创建新的ZXingBarcodeImageView
时,未将新视图添加到页面中,导致仍然看到旧数据。