除了 Sven-Michael,您还可以通过创建您的ListView
(如果您还没有)的继承来丰富他的代码,Delegate
并像这样添加一个:
public class AccessoryListView : ListView
{
public delegate void OnAccessoryTappedDelegate();
public OnAccessoryTappedDelegate OnAccessoryTapped { get; set; }
}
现在从您的自定义渲染器中 - 不要忘记将其设置为新继承ListView
的 - 调用委托
public class ContactListViewRenderer : ListViewRenderer, IUITableViewDelegate
{
private AccessoryListView _formsControl;
protected override void OnElementChanged(ElementChangedEventArgs<AccessoryListView> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.WeakDelegate = this; // or. Control.Delegate
}
if (e.NewElement != null)
_formsControl = e.NewElement;
}
public virtual void AccessoryButtonTapped(UITableView tableView, NSIndexPath indexPath)
{
// accessory tapped
if (_formsControl.OnAccessoryTapped != null)
_formsControl.OnAccessoryTapped();
}
}
您当然可以在其中添加一些参数来为您的共享代码提供更多数据。有了这个,你确实有一些特定于平台的代码,但你会“尽快”回到你的共享代码,使你的代码更可重用。
可以在此处找到另一个带有地图控件的示例。