r2d*_*igo 0 xaml xamarin.ios xamarin xamarin.forms
我正在做一个Xamarin.Forms应用程序,我需要使用行为。我已经将Xamarin.Forms.Behaviors包添加到项目中,并且将行为添加到一页的XAML中,因此在选择ListView更改时将执行命令:
<b:Interaction.Behaviors>
<b:BehaviorCollection>
<b:EventToCommand Command="{Binding ItemSelectedCommand}" EventName="ItemSelected" />
</b:BehaviorCollection>
</b:Interaction.Behaviors>
Run Code Online (Sandbox Code Playgroud)
这在Android上很好用,但TargetInvocationException在iOS下导航到同一页面时,同一项目会抛出。是什么原因造成的?
Xamarin的iOS链接器在删除其认为未使用或未引用的符号/类型时更具攻击性。Xamarin.Forms XAML通常是此过程的受害者。
有两个选项可解决此问题:-更改链接器的剥离模式(右键单击Xamarin.iOS项目-> Properties-> iOS Build选项卡->设置Linker behavior为Link SDK assemblies only或Don't link)。这将确保在创建应用程序包时删除最少数量的符号(或根本不删除任何符号),不利的是应用程序的大小会急剧增加。-创建一个手动引用这些类型的代码文件(例如,创建未使用的实例),以便不会自动删除它们。像MvvmCross这样的库都使用这种方法。
尽管需要做更多的工作,但推荐使用后一种方法。当您使用的第三方库的类型越来越多时,应该使用前一种库,并且要引用所有这些库需要更多的工作。
| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |