public void Apply(IMenu menu, Context context, object parent)
 {
     PlatformExtensions.ValidateTemplate(ItemsSource, Items);
     var setter = new XmlPropertySetter<IMenu>(menu, context, new BindingSet());
     menu.SetBindingMemberValue(AttachedMembers.Object.Parent, parent);
     setter.SetBinding(nameof(DataContext), DataContext, false);
     setter.SetBoolProperty(nameof(IsVisible), IsVisible);
     setter.SetBoolProperty(nameof(IsEnabled), IsEnabled);
     if (!string.IsNullOrEmpty(Bind))
         setter.BindingSet.BindFromExpression(menu, Bind);
     if (string.IsNullOrEmpty(ItemsSource))
     {
         if (Items != null)
         {
             for (int index = 0; index < Items.Count; index++)
                 Items[index].Apply(menu, context, index, index);
         }
     }
     else
     {
         menu.SetBindingMemberValue(AttachedMembers.Menu.ItemsSourceGenerator, new MenuItemsSourceGenerator(menu, context, ItemTemplate));
         setter.SetBinding(nameof(ItemsSource), ItemsSource, true);
     }
     setter.Apply();
 }
        public void Apply(IMenu menu, Context context, object parent)
        {
            PlatformExtensions.ValidateTemplate(ItemsSource, Items);
            var setter = new XmlPropertySetter <IMenu>(menu, context, new BindingSet());

            menu.SetBindingMemberValue(AttachedMembers.Object.Parent, parent);
            setter.SetBinding(nameof(DataContext), DataContext, false);
            setter.SetBoolProperty(nameof(IsVisible), IsVisible);
            setter.SetBoolProperty(nameof(IsEnabled), IsEnabled);
            if (!string.IsNullOrEmpty(Bind))
            {
                setter.BindingSet.BindFromExpression(menu, Bind);
            }
            if (string.IsNullOrEmpty(ItemsSource))
            {
                if (Items != null)
                {
                    for (int index = 0; index < Items.Count; index++)
                    {
                        Items[index].Apply(menu, context, index, index);
                    }
                }
            }
            else
            {
                menu.SetBindingMemberValue(AttachedMembers.Menu.ItemsSourceGenerator, new MenuItemsSourceGenerator(menu, context, ItemTemplate));
                setter.SetBinding(nameof(ItemsSource), ItemsSource, true);
            }
            setter.Apply();
        }