Для реализации эффекта для использования в проекте XAML Xamarin Forms могут быть определены следующие классы:
MyEffects.EffectIds
(пространство имен MyEffects
, имя класса EffectIds
), расположенное в Xamarin Forms или проекте Netstandard (например, MyProject
) для определения идентификатора Эффекта.
MyEffects.MyEffect
(пространство имен MyEffects
, имя класса MyEffect
), расположенное в проекте Xamarin Forms или проект Netstandard (например, MyProject
) для определения эффекта Xamarin Forms.
MyEffects.iOS.MyEffect
(пространство имен MyEffects.iOS
, имя класса MyEffect
), расположенный в проекте iOS для реализации iOS эффект.
Пример MyEffects.EffectIds
:
using Xamarin.Forms;
[assembly: ResolutionGroupName(MyEffects.EffectIds.GroupName)]
namespace MyEffects
{
public class EffectIds
{
public const string GroupName = "MyEffects";
public static string MyEffect => typeof(MyEffect).FullName;
//another effect not defined here
public static string MyOtherEffect => typeof(MyOtherEffect).FullName;
...
Пример MyEffects.MyEffect
:
using Xamarin.Forms;
namespace MyEffects
{
public class MyEffect : RoutingEffect
{
public MyEffect() : base(EffectIds.MyEffect) { }
}
}
Пример MyEffects.iOS.MyEffect
:
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using PlatformEffects = MyEffects.iOS;
using RoutingEffects = MyEffects;
[assembly: ExportEffect(typeof(PlatformEffects.MyEffect), nameof(RoutingEffects.MyEffect))]
namespace MyEffects.iOS
{
public class MyEffect : PlatformEffect
{
protected override void OnAttached()
{
...
Пример использования в XAML:
<ContentPage
xmlns:effects="clr-namespace:MyEffects;assembly=MyProject"
...
<Entry ... >
<Entry.Effects>
<effects:MyEffect />
</Entry.Effects>
</Entry>