我有一个奇怪的问题,我无法解释它的原因 - 也许这里有人可以阐明它
我在Xamarin Forms中有一个票证扫描应用程序,目前正在Android上测试它 界面允许您:
在支票订单验证后,用户必须从下拉列表中选择票数并按下confrim输入按钮
我正在尝试做的是,如果该票证上的座位只有1 - 然后自动触发确认输入按钮功能
我遇到的问题是 - 我的一些逻辑依赖于在代码中设置下拉索引 - 由于某种原因它不会更新 - 如此处调试器中所示
这是我今天注意到的第二个,早些时候它是一个var我试图分配一个字符串并且它一直变为null - 最终我替换了那个代码
这是xamarin中的一个错误吗?
代码已简化:
async void OnCheckOrderButtonClicked(object sender, EventArgs e)
{
await ValidateOrderEntry();
}
private async void scanCameraButton_Clicked(object sender, EventArgs e)
{
messageLabel.Text = string.Empty;
var options = new ZXing.Mobile.MobileBarcodeScanningOptions();
options.PossibleFormats = new List<ZXing.BarcodeFormat>() {
ZXing.BarcodeFormat.QR_CODE,ZXing.BarcodeFormat.EAN_8, ZXing.BarcodeFormat.EAN_13
};
var scanPage = new ZXingScannerPage(options);
scanPage.OnScanResult += (result) =>
{
//stop scan
scanPage.IsScanning = false;
Device.BeginInvokeOnMainThread(async () =>
{
//pop the page and get the result
await Navigation.PopAsync();
orderNoEntry.Text = result.Text;
//automatically trigger update
await ValidateOrderEntry();
});
};
await Navigation.PushAsync(scanPage);
}
private async Task ValidateOrderEntry()
{
//...other code....
checkInPicker.Items.Clear();
if (availablTickets == 1)
{
checkInPickerStack.IsVisible = true;
checkInPicker.SelectedIndex = 0;
messageLabel.Text = "Ticket OK! - " + orderNoEntry.Text;
messageLabel.TextColor = Color.Green;
//select the only element
checkInPicker.SelectedIndex = 0;
await PostDoorEntry();
}
//...other code....
}
private async Task PostDoorEntry()
{
int entryCount = checkInPicker.SelectedIndex + 1;
//... more code...
//...post api code..
}
答案 0 :(得分:2)
也许我忽略了某些东西,但是你清除了所指出的那些项目上方的所有项目。这意味着您的Picker
中没有商品,因此您无法将SelectedIndex
设置为-1以外的任何商品,只是因为没有商品。