选择器的完成按钮的Event_Handler

我有一个带有项目列表的xamarin选择器,我想在iPhone上按下“完成”按钮并在android上按下“Oke”按钮时删除选择器。
我有删除选择器的代码。 但我不知道可能由哪个event_Handler。

码:

Picker picker = new Picker { Title = "What's in the slot?", VerticalOptions = LayoutOptions.CenterAndExpand //HorizontalOptions = LayoutOptions.Center }; private void Displaypickerview(int row, int column) { if (status == "filling board") { foreach (string text in pickerText) { picker.Items.Add(text); } foreach (string ore in oreLevels) { picker.Items.Add(ore); } picker.SelectedIndexChanged += (sender, args) => { if (picker.SelectedIndex == -1) { } else { //change value of cell and button Picker picker = (Picker)sender; int index = picker.SelectedIndex; if (index < pickerText.Length) { board[row, column].Text = pickerText[index - 1]; } else { board[row, column].Text = oreLevels[index - 1 - pickerText.Length]; } } }; } else if (status == "choosing item") { } } 

它在iPhone上的样子示例:

选择器

不幸的是,在您的情况下,您不能对Android和iOS使用相同的事件,因为:

当前Picker控件在按下OK按钮后在Android上发送SelectedIndexChanged事件。 但是,在iOS上,只要用户滚动选择器并让它停在某个项目上,就会发送该事件

这是众所周知的问题,我从这里引用。

您应该结合SelectedIndexChanged和Unfocus事件来实现您的目标。 您可以在此主题中找到一些解决方案https://forums.xamarin.com/discussion/20847/picker-selection-event

UPD:看起来我没理解你的问题。 如果我现在就这样做了,那么你必须使用自定义渲染器并在其中指定所需的逻辑。

对于iOS。 创建inheritancePickerRenderer的自定义渲染器并实现类似的东西:

 protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); var extendedPicker = e.NewElement as ExtendedPicker; if (extendedPicker == null) return; var toolbar = new UIToolbar(new CGRect(0.0f, 0.0f, Control.Frame.Size.Width, 44.0f)); toolbar.Items = new[] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, delegate { Control.ResignFirstResponder(); }) }; if (this.Control != null) { Control.InputAccessoryView = toolbar; } } 

因为Andorid看起来像是从盒子里工作