Пример #1
0
 private void SetDataContext(object target, BindingSet setter, object dataContext, bool useContext)
 {
     if (useContext)
     {
         target.SetDataContext(dataContext);
     }
     else
     {
         XmlPropertySetter <object, object> .AddBinding(setter, target, AttachedMemberConstants.DataContext, DataContext, false);
     }
 }
Пример #2
0
 private void SetDataContext(object target, BindingSet setter, object dataContext, bool useContext)
 {
     if (useContext)
     {
         BindingServiceProvider.ContextManager.GetBindingContext(target).Value = dataContext;
     }
     else
     {
         XmlPropertySetter <object, object> .AddBinding(setter, target, AttachedMemberConstants.DataContext, DataContext, false);
     }
 }
Пример #3
0
        private void ApplyInternal(IMenu menu, Context context, int id, int order, object dataContext, bool useContext)
        {
            PlatformExtensions.ValidateTemplate(ItemsSource, Items);
            bool isSubMenu = !string.IsNullOrEmpty(ItemsSource) || (Items != null && Items.Count > 0);
            XmlPropertySetter <MenuItemTemplate, IMenuItem> setter;
            int groupId;

            int.TryParse(Group, out groupId);
            if (isSubMenu)
            {
                ISubMenu subMenu = menu.AddSubMenu(groupId, id, order, string.Empty);
                setter = new XmlPropertySetter <MenuItemTemplate, IMenuItem>(subMenu.Item, context, new BindingSet());
                subMenu.SetBindingMemberValue(AttachedMembers.Object.Parent, menu);
                subMenu.Item.SetBindingMemberValue(AttachedMembers.Object.Parent, subMenu);
                SetDataContext(subMenu, setter.BindingSet, dataContext, useContext);
                ApplySelf(subMenu.Item, setter);

                if (string.IsNullOrEmpty(ItemsSource))
                {
                    for (int index = 0; index < Items.Count; index++)
                    {
                        Items[index].Apply(subMenu, context, index, index);
                    }
                }
                else
                {
                    subMenu.SetBindingMemberValue(AttachedMembers.Menu.ItemsSourceGenerator,
                                                  new MenuItemsSourceGenerator(subMenu, context, ItemTemplate ?? this));
                    XmlPropertySetter <object, object> .AddBinding(setter.BindingSet, subMenu, AttachedMemberConstants.ItemsSource, ItemsSource, true);
                }
            }
            else
            {
                var menuItem = menu.Add(groupId, id, order, string.Empty);
                setter = new XmlPropertySetter <MenuItemTemplate, IMenuItem>(menuItem, context, new BindingSet());
                menuItem.SetBindingMemberValue(AttachedMembers.Object.Parent, menu);
                SetDataContext(menuItem, setter.BindingSet, dataContext, useContext);
                ApplySelf(menuItem, setter);
            }
            setter.Apply();
        }