public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();
            TextBox textBox = null;

            foreach (var tb in VisualTreeHelperUtil.GetControlsDecendant <TextBox>(this).Where(uie => uie.Focusable))
            {
                textBox       = tb;
                tb.GotFocus  += (sender, e) => OnControlGotFous((UIElement)sender);
                tb.LostFocus +=
                    delegate
                {
                    IsOrHisChildrenAreFocused = IsOrHisChildrenAreFocused;
                    if (SelectedItem == null)
                    {
                        SelectedItem = Items[0];
                    }
                };
            }
            if (textBox != null)
            {
                textBox.Focus();
                textBox.SelectAll();
            }
        }
Beispiel #2
0
 private void PropertiesListView_LostFocus(object sender, RoutedEventArgs e)
 {
     if (Designer.IsFocused || VisualTreeHelperUtil.GetFocusedElement(Designer) != null)
     {
         Designer.OnSelectionChanged();
     }
 }
Beispiel #3
0
 internal ListViewItem GetListViewItem(PropertyBase property)
 {
     return((from lvi in VisualTreeHelperUtil.GetControlsDecendant <ListViewItem>(propertiesListView)
             let uiProperty = lvi.Content as UIProperty
                              where uiProperty != null && uiProperty.BusinessInstance == property
                              select lvi).First());
 }
Beispiel #4
0
        private static void OnAttachedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            UniformBoard panel = VisualTreeHelperUtil.GetParent(d, (parent) => parent is UniformBoard) as UniformBoard;

            if (panel != null)
            {
                RefreshPanel(panel);
            }
        }
Beispiel #5
0
        internal ListViewItem GetListViewItem(ComplexProperty complexProperty, out int index)
        {
            var value = (from lvi in VisualTreeHelperUtil.GetControlsDecendant <ListViewItem>(propertiesListView)
                         let uiRelatedProperty = lvi.Content as UIRelatedProperty
                                                 where uiRelatedProperty != null
                                                 select new { ListViewItem = lvi, UIRelatedProperty = uiRelatedProperty }).Select((lvi, i) => new { ListViewItem = lvi, Index = i }).First(lvi => lvi.ListViewItem.UIRelatedProperty.BusinessInstance == complexProperty);

            index = value.Index;
            return(value.ListViewItem.ListViewItem);
        }
        private bool RenameProperty(object listViewItem)
        {
            var editableTextBlock = VisualTreeHelperUtil.GetControlsDecendant <EditableTextBlock>(listViewItem).First();

            if (editableTextBlock != null)
            {
                editableTextBlock.Edit();
                return(true);
            }
            return(false);
        }
 public static ExecutedRoutedEventHandler AddAssociationExecuted(UIElement parent, Func <CSDLView> getCSDLView, Func <DesignerView> getDesignerView, UIEntityType defaultEntityType1, Action <UIAssociation> specialActionToDoWhenNewItemAdded)
 {
     return((object sender, ExecutedRoutedEventArgs e) =>
     {
         var csdlView = getCSDLView();
         var designerView = getDesignerView();
         var addAssociationWindow = new AddAssociationWindow {
             Owner = VisualTreeHelperUtil.GetControlAscendant <Window>(parent), DataContext = csdlView, NavigationProperty1EntityType = defaultEntityType1
         };
         switch (addAssociationWindow.ShowDialog())
         {
         case true:
             var uiAssociation = csdlView.AddAssociation(addAssociationWindow.AssociationName, addAssociationWindow.NavigationProperty1Name, addAssociationWindow.NavigationProperty1EntityType, addAssociationWindow.NavigationProperty1Cardinality.Value, addAssociationWindow.NavigationProperty2Name, addAssociationWindow.NavigationProperty2EntityType, addAssociationWindow.NavigationProperty2Cardinality.Value);
             SizeChangedEventHandler actionToDoWhenNewItemAdded = null;
             bool drawAssociation = false;
             DesignerCanvas designerCanvas = parent as DesignerCanvas;
             if (designerCanvas == null)
             {
                 designerCanvas = VisualTreeHelperUtil.GetControlAscendant <DesignerCanvas>(parent);
             }
             var navigationProperty1EntityTypeDesigner = designerCanvas.GetTypeDesigner(uiAssociation.NavigationProperty1.ParentType);
             var navigationProperty2EntityTypeDesigner = designerCanvas.GetTypeDesigner(uiAssociation.NavigationProperty2.ParentType);
             actionToDoWhenNewItemAdded =
                 (object o, SizeChangedEventArgs scea) =>
             {
                 if (designerView.ContainsEntityType(uiAssociation.NavigationProperty1.ParentType) && designerView.ContainsEntityType(uiAssociation.NavigationProperty2.ParentType))
                 {
                     if (drawAssociation)
                     {
                         navigationProperty1EntityTypeDesigner.DrawAssociation(navigationProperty2EntityTypeDesigner, uiAssociation.NavigationProperty1.BusinessInstance as NavigationProperty);
                     }
                     else
                     {
                         drawAssociation = true;
                     }
                 }
                 if (specialActionToDoWhenNewItemAdded != null)
                 {
                     specialActionToDoWhenNewItemAdded(uiAssociation);
                 }
                 ((ListView)o).SizeChanged -= actionToDoWhenNewItemAdded;
             };
             navigationProperty1EntityTypeDesigner.propertiesListView.SizeChanged += actionToDoWhenNewItemAdded;
             if (navigationProperty2EntityTypeDesigner != null)
             {
                 navigationProperty2EntityTypeDesigner.propertiesListView.SizeChanged += actionToDoWhenNewItemAdded;
             }
             break;
         }
     });
 }
        private void PropertiesGrid_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            var scrollViewer = VisualTreeHelperUtil.GetControlAscendant <ScrollViewer>(this);
            var maxWidth     = scrollViewer.ActualWidth - 10;

            if (propertiesGrid.ActualWidth > maxWidth)
            {
                propertiesGrid.Width = maxWidth;
            }
            else if (propertiesGrid.ActualWidth != maxWidth)
            {
                propertiesGrid.Width = double.NaN;
            }
        }
        private void RearrangeHistoryControls()
        {
            foreach (var item in listview.Items)
            {
                ListViewItem lvItem = listview.ContainerFromItem(item) as ListViewItem;

                if (lvItem != null)
                {
                    Expander expander = VisualTreeHelperUtil.GetFrameworkElementByName <Expander>(lvItem);

                    expander.IsExpanded = false;
                }
            }
        }
Beispiel #10
0
        internal ListViewItem GetListViewItem(NavigationProperty navigationProperty, out int index)
        {
            foreach (ListViewItem lvia in VisualTreeHelperUtil.GetControlsDecendant <ListViewItem>(propertiesListView))
            {
                lvia.ToString();
            }

            var value = (from lvi in VisualTreeHelperUtil.GetControlsDecendant <ListViewItem>(propertiesListView)
                         let uiRelatedProperty = lvi.Content as UIRelatedProperty
                                                 where uiRelatedProperty != null
                                                 select new { ListViewItem = lvi, UIRelatedProperty = uiRelatedProperty }).Select((lvi, i) => new { ListViewItem = lvi, Index = i }).First(lvi => lvi.ListViewItem.UIRelatedProperty.BusinessInstance == navigationProperty);

            index = value.Index; // +navigationProperty.EntityType.ComplexProperties.Count;
            return(value.ListViewItem.ListViewItem);
        }
        protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            base.OnPreviewMouseLeftButtonDown(e);

            foreach (var relation in VisualTreeHelperUtil.GetControlsDecendant <RelationBase>(this))
            {
                relation.IsSelected = false;
            }

            var typeDesigner = VisualTreeHelperUtil.GetControlAscendant <TypeBaseDesigner>(e.OriginalSource);

            _moveEntityType = typeDesigner != null && VisualTreeHelperUtil.GetControlAscendant <ListView>(e.OriginalSource) == null && VisualTreeHelperUtil.GetControlAscendant <TextBox>(e.OriginalSource) == null;
            if (_moveEntityType)
            {
                _moveEntityTypeStartPoint = e.GetPosition(this);
                Cursor = Cursors.ScrollAll;
            }
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var  separator     = (MenuSeparator)value;
            var  items         = VisualTreeHelperUtil.GetControlAscendant <ItemsControl>(separator).Items.OfType <FrameworkElement>();
            bool visibleBefore = false;
            bool visibleAfter  = false;
            bool before        = true;

            foreach (var item in items)
            {
                if (item is Separator)
                {
                    if (item == separator)
                    {
                        before = false;
                    }
                    else if (item.IsVisible)
                    {
                        if (before)
                        {
                            visibleBefore = false;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                else if (item.IsVisible)
                {
                    if (before)
                    {
                        visibleBefore = true;
                    }
                    else
                    {
                        visibleAfter = true;
                    }
                }
            }
            return(visibleBefore && visibleAfter ? Visibility.Visible : Visibility.Collapsed);
        }
        protected virtual void Rename(object originalSource)
        {
            if (_groupRightClick)
            {
                return;
            }
            var editableTextBlock = originalSource as EditableTextBlock;

            if (editableTextBlock != null)
            {
                editableTextBlock.Edit();
                return;
            }
            if (originalSource == this)
            {
                if (propertiesListView.SelectedItem != null)
                {
                    var listViewItem = GetListViewItem(((UIProperty)propertiesListView.SelectedItem).BusinessInstance);
                    if (listViewItem.IsFocused && RenameProperty(listViewItem))
                    {
                        return;
                    }
                }
                var selectedControl = VisualTreeHelperUtil.GetFocusedElement(this);
                editableTextBlock = selectedControl as EditableTextBlock;
                if (editableTextBlock != null)
                {
                    editableTextBlock.Edit();
                    return;
                }
                if (selectedControl is System.Windows.Controls.ListViewItem && RenameProperty(selectedControl))
                {
                    return;
                }
                entityHeaderEditableTextBlock.Edit();
                return;
            }
            if (originalSource is System.Windows.Controls.ListViewItem)
            {
                RenameProperty(originalSource);
            }
        }
Beispiel #14
0
        protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            base.OnPreviewMouseLeftButtonDown(e);
            if (VisualTreeHelperUtil.GetControlAscendant <TextBox>(e.OriginalSource) == null || VisualTreeHelperUtil.GetControlAscendant <EditableTextBlock>(e.OriginalSource) == null)
            {
                if (!(e.OriginalSource is FrameworkElement))
                {
                    return;
                }

                FrameworkElement control = (FrameworkElement)e.OriginalSource;
                while ((control = VisualTreeHelperUtil.GetControlAscendant <Grid>(control)) != null)
                {
                    if (control.Name == "grdHeader")
                    {
                        ClickOnTheHeader();
                        break;
                    }
                }
            }
        }
Beispiel #15
0
        internal void DrawAssociation(TypeBaseDesigner otherTypeDesigner, NavigationProperty navigationProperty)
        {
            var csdlAssociation = navigationProperty.Association;
            int otherTypeDesignerItemIndex;
            var otherNavigationProperty = csdlAssociation.PropertiesEnd.First(np => np != navigationProperty);
            var otherListViewItem       = otherTypeDesigner.GetListViewItem(otherNavigationProperty, out otherTypeDesignerItemIndex);
            int typeDesignerItemIndex;
            var typeDesignerListViewItem = GetListViewItem(navigationProperty, out typeDesignerItemIndex);

            ICSharpCode.Data.EDMDesigner.Core.UI.UserControls.Relations.Association association;
            if (csdlAssociation.PropertyEnd1 == navigationProperty)
            {
                association = new ICSharpCode.Data.EDMDesigner.Core.UI.UserControls.Relations.Association(csdlAssociation, Designer, this, otherTypeDesigner, typeDesignerListViewItem, otherListViewItem, typeDesignerItemIndex, otherTypeDesignerItemIndex);
            }
            else
            {
                association = new ICSharpCode.Data.EDMDesigner.Core.UI.UserControls.Relations.Association(csdlAssociation, Designer, otherTypeDesigner, this, otherListViewItem, typeDesignerListViewItem, otherTypeDesignerItemIndex, typeDesignerItemIndex);
            }
            var relationContener = new RelationContener(association);

            Designer.Children.Add(relationContener);
            relationContener.SetBinding(Canvas.LeftProperty, new Binding {
                Source = association, Path = new PropertyPath("CanvasLeft")
            });
            relationContener.SetBinding(Canvas.TopProperty, new Binding {
                Source = association, Path = new PropertyPath("CanvasTop")
            });
            AddRelationContenerByRelatedProperty(UIType.Properties[navigationProperty], relationContener);
            otherTypeDesigner.AddRelationContenerByRelatedProperty(otherTypeDesigner.UIType.Properties[otherNavigationProperty], relationContener);
            NotifyCollectionChangedEventHandler mappingCollectionChanged = delegate
            {
                VisualTreeHelperUtil.GetControlsDecendant <EditableTextBlock>(otherListViewItem).First().GetBindingExpression(EditableTextBlock.OpacityProperty).UpdateTarget();
                VisualTreeHelperUtil.GetControlsDecendant <EditableTextBlock>(typeDesignerListViewItem).First().GetBindingExpression(EditableTextBlock.OpacityProperty).UpdateTarget();
            };

            csdlAssociation.PropertyEnd1.Mapping.CollectionChanged += mappingCollectionChanged;
            csdlAssociation.PropertyEnd2.Mapping.CollectionChanged += mappingCollectionChanged;
        }
 protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
 {
     base.OnMouseLeftButtonDown(e);
     if (VisualTreeHelperUtil.GetControlAscendant <EntityTypeDesigner>(e.OriginalSource) == null)
     {
         if (UITypeToAdd == null)
         {
             UnselectAllTypes();
             _startSelectionPoint = e.GetPosition(this);
             _isSelecting         = true;
         }
         else
         {
             AddType(UITypeToAdd, e.GetPosition(this));
             UITypeToAdd = null;
         }
     }
     else
     {
         UITypeToAdd = null;
     }
     Container.Selection = null;
 }
Beispiel #17
0
        protected TypeBaseDesigner(IUIType uiType)
        {
            InitializeComponent();
            UIType      = uiType;
            DataContext = UIType;
            InitContextMenuCommandBindings();
            entityTypeExpander.PreviewMouseDown +=
                (sender, e) =>
            {
                if (e.LeftButton == MouseButtonState.Pressed && (MoreThanOneTypeSelected || !(VisualTreeHelperUtil.GetControlAscendant <ListView>(e.OriginalSource) == propertiesListView)))
                {
                    SelectOrUnselect();
                }
                else if (!IsSelected)
                {
                    IsSelected = true;
                }
            };
            if (!Init)
            {
                SizeChangedEventHandler sizeChangedHandler = null;
                sizeChangedHandler = delegate
                {
                    DrawRelations();
                    SizeChanged -= sizeChangedHandler;
                };
                SizeChanged += sizeChangedHandler;
            }
            SizeChanged += delegate { OnMove(); };
            uiType.RelatedPropertyDeleted += uiRelatedProperty =>
            {
                if (RelationsContenerByRelatedProperty.ContainsKey(uiRelatedProperty))
                {
                    Designer.Children.Remove(RelationsContenerByRelatedProperty[uiRelatedProperty]);
                    RelationsContenerByRelatedProperty.Remove(uiRelatedProperty);
                }
            };
            var uiEntityType = uiType as UIEntityType;

            if (uiEntityType != null)
            {
                uiEntityType.AbstractChanged += delegate { entityTypeExpander.GetBindingExpression(TypeBaseExpander.BorderBrushProperty).UpdateTarget(); }
            }
            ;
        }
        private void InitContextMenuCommandBindings()
        {
            CommandBindings.AddRange(
                new[]
            {
                new CommandBinding(AddScalarPropertyCommand,
                                   delegate
                {
                    var addScalarPropertyWindow = new AddScalarPropertyWindow {
                        Owner = Application.Current.MainWindow
                    };
                    switch (addScalarPropertyWindow.ShowDialog())
                    {
                    case true:
                        var uiScalarProperty = UIType.AddScalarProperty(addScalarPropertyWindow.PropertyName, addScalarPropertyWindow.PropertyType.Value);
                        SizeChangedEventHandler actionToDoWhenNewItemAdded = null;
                        actionToDoWhenNewItemAdded =
                            delegate
                        {
                            propertiesListView.SelectedValue = uiScalarProperty;
                            GetListViewItem(uiScalarProperty.BusinessInstance as ScalarProperty).Focus();
                            propertiesListView.SizeChanged -= actionToDoWhenNewItemAdded;
                        };
                        propertiesListView.SizeChanged += actionToDoWhenNewItemAdded;
                        break;
                    }
                },
                                   (sender, e) => e.CanExecute = ApplyNotVisibleIfMoreThanOneTypeSelected(ContextMenu.GetMenuItem(MENUITEM_ADD, MENUITEM_ADD_SCALAR_PROPERTY))
                                   ),
                new CommandBinding(AddComplexPropertyCommand,
                                   delegate
                {
                    var addComplexPropertyWindow = new AddComplexPropertyWindow(ComplexTypesAllowedForComplexProperty)
                    {
                        Owner = Application.Current.MainWindow, DataContext = UIType.View
                    };
                    switch (addComplexPropertyWindow.ShowDialog())
                    {
                    case true:
                        var uiComplexType       = addComplexPropertyWindow.PropertyType;
                        var businessComplexType = uiComplexType.BusinessInstance;
                        var uiComplexProperty   = UIType.AddComplexProperty(addComplexPropertyWindow.PropertyName, businessComplexType);
                        DrawComplexPropertyRelationAfterAddedComplexProperty(uiComplexType, uiComplexProperty);
                        break;
                    }
                },
                                   (sender, e) => e.CanExecute = ApplyNotVisibleIfMoreThanOneTypeSelected(ContextMenu.GetMenuItem(MENUITEM_ADD, MENUITEM_ADD_COMPLEX_PROPERTY)) && ComplexTypesAllowedForComplexProperty.Any()
                                   ),
                new CommandBinding(RenameCommand,
                                   (sender, e) => Rename(e.OriginalSource),
                                   (sender, e) =>
                {
                    var renameMenuItem = ContextMenu.GetMenuItem(MENUITEM_RENAME);
                    if (SetVisibility(renameMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(renameMenuItem) && !_groupRightClick))
                    {
                        e.CanExecute = (e.OriginalSource == this || propertiesListView.SelectedItems.Count == 1);
                    }
                    else
                    {
                        e.CanExecute = false;
                    }
                }
                                   ),
                new CommandBinding(DeleteCommand,
                                   (sender, e) => Delete(e.OriginalSource),
                                   (sender, e) =>
                {
                    var deleteMenuItem = ContextMenu.GetMenuItem(MENUITEM_DELETE);
                    if (SetVisibility(deleteMenuItem, () => AllowDelete(deleteMenuItem)))
                    {
                        e.CanExecute = true;
                    }
                    else
                    {
                        e.CanExecute = false;
                    }
                }
                                   ),
                new CommandBinding(DesignerCanvas.RemoveFromDesignerCommand,
                                   delegate { Designer.RemoveFromDesigner(); },
                                   (sender, e) => e.CanExecute = SetVisibility(ContextMenu.GetMenuItem(MENUITEM_REMOVE_FROM_DESIGNER), () => !PropertiesTreeViewFocused)
                                   ),
                new CommandBinding(CutCommand,
                                   delegate { CutSelectedProperties(); },
                                   (sender, e) => e.CanExecute = ApplyCutCopyVisible(ContextMenu.GetMenuItem(MENUITEM_CUT))
                                   ),
                new CommandBinding(CopyCommand,
                                   delegate { CopySelectedProperties(); },
                                   (sender, e) => e.CanExecute = ApplyCutCopyVisible(ContextMenu.GetMenuItem(MENUITEM_COPY))
                                   ),
                new CommandBinding(PasteCommand,
                                   delegate
                {
                    PasteClipboardProperties();
                },
                                   (sender, e) => e.CanExecute = ApplyPasteVisible() && CanPaste()
                                   ),
                //new CommandBinding(PropertiesCommand,
                //    delegate
                //    {
                //        var focusedObject = VisualTreeHelperUtil.GetFocusedElement(this);
                //        if (VisualTreeHelperUtil.IsAscendant(propertiesListView, focusedObject))
                //            Designer.Container.ShowPropertiesTab((UIProperty)propertiesListView.SelectedItem);
                //        else
                //            Designer.Container.ShowPropertiesTab(UIType);
                //    },
                //    (sender, e) =>
                //    {
                //        var propertiesMenuItem = ContextMenu.GetMenuItem(MENUITEM_PROPERTIES);
                //        if (SetVisibility(propertiesMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(propertiesMenuItem) && !_groupRightClick && (!PropertiesTreeViewFocused || propertiesListView.SelectedItems.Count == 1)))
                //            e.CanExecute = true;
                //        else
                //            e.CanExecute = false;
                //    }
                //),
                new CommandBinding(MappingCommand,
                                   delegate
                {
                    var focusedObject = VisualTreeHelperUtil.GetFocusedElement(this);
                    Designer.Container.ShowMappingTab(UIType);
                },
                                   (sender, e) =>
                {
                    var mappingMenuItem = ContextMenu.GetMenuItem(MENUITEM_MAPPING);
                    if (SetVisibility(mappingMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(mappingMenuItem) && !_groupRightClick && (!PropertiesTreeViewFocused || propertiesListView.SelectedItems.Count == 1)))
                    {
                        e.CanExecute = true;
                    }
                    else
                    {
                        e.CanExecute = false;
                    }
                }
                                   ),
                new CommandBinding(ShowBaseTypeCommand,
                                   delegate { Designer.UITypeToAdd = Designer.EDMView.CSDL.EntityTypes[((EntityType)UIType.BusinessInstance).BaseType]; },
                                   (sender, e) =>
                {
                    var showBaseMenuItem = ContextMenu.GetMenuItem(MENUITEM_SHOW_BASE_TYPE);
                    var entityType       = UIType.BusinessInstance as EntityType;
                    if (SetVisibility(showBaseMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(showBaseMenuItem) && !_groupRightClick && (!PropertiesTreeViewFocused || propertiesListView.SelectedItems.Count == 1) && entityType != null && entityType.BaseType != null))
                    {
                        e.CanExecute = !Designer.DesignerView.ContainsEntityType(entityType.BaseType);
                    }
                    else
                    {
                        e.CanExecute = false;
                    }
                }
                                   ),
                new CommandBinding(ShowRelatedTypeCommand,
                                   delegate { Designer.UITypeToAdd = ((UIRelatedProperty)propertiesListView.SelectedItem).RelatedType; },
                                   (sender, e) =>
                {
                    var showRelatedTypeMenuItem = ContextMenu.GetMenuItem(MENUITEM_SHOW_RELATED_TYPE);
                    if (SetVisibility(showRelatedTypeMenuItem, () => ApplyNotVisibleIfMoreThanOneTypeSelected(showRelatedTypeMenuItem) && propertiesListView.SelectedItems.Count == 1 && propertiesListView.SelectedItem is UIRelatedProperty && !_groupRightClick))
                    {
                        e.CanExecute = !Designer.DesignerView.ContainsEntityType(((UIRelatedProperty)propertiesListView.SelectedItem).RelatedType);
                    }
                    else
                    {
                        e.CanExecute = false;
                    }
                }
                                   ),
                new CommandBinding(ShowOtherTabsCommand,
                                   delegate { },
                                   (sender, e) =>
                {
                    var showOtherTabsMenuItem = ContextMenu.GetMenuItem(MENUITEM_SHOW_OTHER_TABS);
                    var designerViews         = Designer.EDMView.DesignerViews.Except(new [] { Designer.DesignerView }).Where(dv => dv.TypeDesignersLocations.Any(tdl => tdl.UIType.BusinessInstance == UIType.BusinessInstance));
                    e.CanExecute = designerViews.Any();
                    if (e.CanExecute)
                    {
                        ShowDesignerCanvasPreviews(Designer.EDMView, UIType, showOtherTabsMenuItem, designerViews);
                    }
                    else
                    {
                        showOtherTabsMenuItem.Items.Clear();
                    }
                }
                                   )
                //new CommandBinding(ShowOtherTabsItemCommand, (sender, e) => ((IEDMDesignerWindow)VisualTreeHelperUtil.GetControlAscendant<Window>(this)).CurrentDesignerView = (DesignerView)e.Parameter)
            }
                );
            var uiEntityType = UIType as UIEntityType;

            if (uiEntityType == null)
            {
                MenuItem addNavigationPropertyMenuItem = ContextMenu.GetMenuItem(MENUITEM_ADD, MENUITEM_ADD_NAVIGATION_PROPERTY);
                if (addNavigationPropertyMenuItem != null)
                {
                    addNavigationPropertyMenuItem.Visibility = Visibility.Collapsed;
                }
            }
            else
            {
                CommandBindings.Add(new CommandBinding(AddNavigationPropertyCommand,
                                                       DesignerCanvas.AddAssociationExecuted(this, () => UIType.View, () => Designer.DesignerView, uiEntityType,
                                                                                             (UIAssociation uiAssociation) =>
                {
                    if (uiAssociation.NavigationProperty1.ParentType == UIType)
                    {
                        propertiesListView.SelectedValue = uiAssociation.NavigationProperty1;
                        GetListViewItem(uiAssociation.NavigationProperty1.BusinessInstance).Focus();
                    }
                }
                                                                                             ),
                                                       (sender, e) => e.CanExecute = ApplyNotVisibleIfMoreThanOneTypeSelected(ContextMenu.GetMenuItem(MENUITEM_ADD, MENUITEM_ADD_NAVIGATION_PROPERTY))
                                                       ));
            }

            ContextMenuOpening +=
                (sender, e) =>
            {
                if (MoreThanOneTypeSelected && (_groupRightClick || PropertiesTreeViewFocused))
                {
                    e.Handled = true;
                }
                ApplyNotVisibleIfMoreThanOneTypeSelected(ContextMenu.GetMenuItem(MENUITEM_ADD));
            };
        }