我想在每次触发特定TextChanged
事件时重绘我的QR码。
当页面加载在XAML文件中设置的值ZXingBarcodeImageView
时,BarcodeValue
对象会在视图中绘制,如下所示:
<forms:ZXingBarcodeImageView
Margin="5,5,5,0"
x:Name="QRCodeView"
BarcodeFormat="QR_CODE"
BarcodeValue="-1" //this is the value of the QR code
/>
我有一个附加了Entry
事件的TextChanged
,它触发了一个函数UpdateQRLabel
。此函数应使用Entry
<Entry
x:Name="Message"
TextChanged="UpdateQRLabel"
/>
如果我在绘制QRCode之后更改了BarcodeValue
参数,它会不会自动重绘。
每次触发TextChanged
事件时,我都需要强制 ZXingBarcodeImageView 对象重绘。
问题
在触发ZXingBarcodeImageView
事件时,如何强制TextChanged
重绘?
答案 0 :(得分:1)
我不确定您是否正在使用数据绑定。由于您使用的是事件,我想没有,但是,它确实可以与数据绑定一起使用。可在此处找到示例存储库:https://github.com/jfversluis/ZXingValueBinding
这归结为这一点。创建一个保存条形码值的属性:
private string _barcodeValue = "-1";
public string BarcodeValue
{
get { return _barcodeValue; }
set
{
_barcodeValue = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(BarcodeValue)));
}
}
拥有此属性的对象需要实现INotifyPropertyChanged
接口。您可以考虑使用PropertyChanged.Fody。
我已经将此属性放在页面的代码后面,这也可以是一个单独的类。现在,将条形码图像视图更改为:<forms:ZXingBarcodeImageView ... BarcodeValue="{Binding BarcodeValue}">
。
每当您将新值设置为BarcodeValue
时,该值就应该更改,因为通过INotifyPropertyChanged
机制通知了UI。