我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?
Posted
技术标签:
【中文标题】我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?【英文标题】:How can we handle the done button click event for a Xamarin Forms Picker? 【发布时间】:2017-02-07 21:14:57 【问题描述】:我想在 Xamarin Forms 中的选取器上的“完成”按钮上触发单击事件。我发现有些人有自定义的条目渲染,但是我们如何在 Xamarin 表单 ios 上的 Picker 中实现完成按钮?
【问题讨论】:
您的意思是Xamarin.Forms.Picker
?尝试收听Unfocused
事件。
好的。有什么方法可以触发完成按钮,你知道吗? @尼古拉·多罗宁
您可以尝试在页面上的其他视图上调用Focus
方法。之后,Picker
将失去焦点,选择视图将被隐藏。从技术上讲,它不会触发点击“完成”按钮,但它的作用大致相同。
【参考方案1】:
您可以使用自定义渲染器来实现此目的。查看 iOS 上 Picker 的 source code,您可以看到“完成”按钮已添加到 UIToolbar。您可以获取对按钮的引用,然后处理其“点击”事件:
public class MyPickerRenderer : PickerRenderer
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
base.OnElementChanged(e);
if(e.OldElement != null)
var toolbar = (UIToolbar)Control.InputAccessoryView;
var doneBtn = toolbar.Items[1];
doneBtn.Clicked -= DoneBtn_Clicked;
if(e.NewElement != null)
var toolbar = (UIToolbar)Control.InputAccessoryView;
var doneBtn = toolbar.Items[1];
doneBtn.Clicked += DoneBtn_Clicked;
void DoneBtn_Clicked(object sender, EventArgs e)
Console.WriteLine("Clicked!!!!");
【讨论】:
以上是关于我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?的主要内容,如果未能解决你的问题,请参考以下文章
如何处理 Xamarin Forms 中推送通知中的点击事件?
Xamarin.Forms JSON 对象到 Listview
Xamarin 表单:如何处理 flowlistview 所选项目的可见性?