我正在Xamarin Forms中编写一个QR代码应用程序,它在文本条目中输入一个输入字符串并将其转换为QR代码。我想在输入或删除文本条目中的输入时动态更改QR代码,类似于我找到的here这个网站。
我相信这可以使用TextChangeEventArgs
,但我不确定它是如何运作的。我在这里缺少什么?
我的文字输入
var myEntry = new Entry
{
Text = "Hello SO"
};
这是我在更改My Entry
时创建新条形码的功能(它还没有被任何东西调用)
void MyEntryChanged(Entry myEntry, TextChangedEventArgs e)
{
barcode = new ZXingBarcodeImageView
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
AutomationId = "zxingBarcodeImageView",
};
barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE;
barcode.BarcodeOptions.Width = 300;
barcode.BarcodeOptions.Height = 300;
barcode.BarcodeOptions.Margin = 10;
barcode.BarcodeValue = myEntry.Text;
Content = barcode;
}
答案 0 :(得分:0)
由于MyEntryChanged事件发生在与UI不同的线程中,因此该线程中不存在元素Content。
你应该使用这样的代码:
void MyEntryChanged(Entry myEntry, TextChangedEventArgs e)
{
Device.BeginInvokeOnMainThread(() =>
{
barcode = new ZXingBarcodeImageView
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
AutomationId = "zxingBarcodeImageView",
};
barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE;
barcode.BarcodeOptions.Width = 300;
barcode.BarcodeOptions.Height = 300;
barcode.BarcodeOptions.Margin = 10;
barcode.BarcodeValue = myEntry.Text;
Content = barcode;
});
}