首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用本机库的功能的Xamarin表单应用程序

使用本机库的功能的Xamarin表单应用程序
EN

Stack Overflow用户
提问于 2018-02-25 12:07:08
回答 1查看 275关注 0票数 0

我的应用程序中唯一特定于平台的代码来自本地库。所以我看到两种选择:

1.引用其适当绑定的 iOS和Android项目。这将要求它们都处理需要这些平台依赖库的UI事件。

2.创建一个共享项目,该项目将围绕绑定项目创建包装器,以创建统一的API,然后使用编译器指令选择适当的实现。

我不确定第一个选项是否可以实现:以本地方式处理UI事件,并将共享响应返回到跨平台xamarin forms项目以供进一步处理。

我相信第二个选项,这两个应用程序将包含所有的代码。如果我已经使用了.NET标准代码共享策略(因为.NET标准不支持编译器指令),我也不知道是否可以使用共享项目。

EN

回答 1

Stack Overflow用户

发布于 2018-02-26 03:15:49

我不确定第一个选项是否可以实现:以本地方式处理UI事件,并将共享响应返回到跨平台xamarin forms项目以供进一步处理。

这是可以实现的,因为所有窗体的控件都通过呈现器呈现为本机。您只能通过自定义渲染器访问本机控件。为了将共享响应返回到窗体项目,您可以通过自定义控件上的自定义事件来实现这一点,就像Cusom ListView样品ItemSelected事件一样:

在PCL中:

代码语言:javascript
复制
public class NativeListView : ListView
{
  ...
  public event EventHandler<SelectedItemChangedEventArgs> ItemSelected;
  ...
}

在自定义渲染器中:

代码语言:javascript
复制
Control.ItemClick += OnItemClick;

...
void OnItemClick(object sender, Android.Widget.AdapterView.ItemClickEventArgs e)
{
    ((NativeListView)Element).NotifyItemSelected(((NativeListView)Element).Items.ToList()[e.Position - 1]);
}

,但是如果您的项目中有很多特定于平台的功能。使用共享项目是一个很好的选择。

如果我已经使用了.NET标准代码共享策略(因为.NET标准不支持编译器指令),我也不知道是否可以使用共享项目。

我相信您需要的是将您的PCL项目更改为一个共享项目。当然,一些代码修改是必要的。但那不算什么。如果您的意思是希望您的PCL引用一个新的Shared Project。不,我不认为它会起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48973240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档