我的应用程序中唯一特定于平台的代码来自本地库。所以我看到两种选择:
1.引用其适当绑定的 iOS和Android项目。这将要求它们都处理需要这些平台依赖库的UI事件。
2.创建一个共享项目,该项目将围绕绑定项目创建包装器,以创建统一的API,然后使用编译器指令选择适当的实现。
我不确定第一个选项是否可以实现:以本地方式处理UI事件,并将共享响应返回到跨平台xamarin forms项目以供进一步处理。
我相信第二个选项,这两个应用程序将包含所有的代码。如果我已经使用了.NET标准代码共享策略(因为.NET标准不支持编译器指令),我也不知道是否可以使用共享项目。
发布于 2018-02-26 03:15:49
我不确定第一个选项是否可以实现:以本地方式处理UI事件,并将共享响应返回到跨平台xamarin forms项目以供进一步处理。
这是可以实现的,因为所有窗体的控件都通过呈现器呈现为本机。您只能通过自定义渲染器访问本机控件。为了将共享响应返回到窗体项目,您可以通过自定义控件上的自定义事件来实现这一点,就像Cusom ListView样品的ItemSelected事件一样:
在PCL中:
public class NativeListView : ListView
{
...
public event EventHandler<SelectedItemChangedEventArgs> ItemSelected;
...
}在自定义渲染器中:
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。不,我不认为它会起作用。
https://stackoverflow.com/questions/48973240
复制相似问题