public void HandleDrop([NotNull] RenderingTreeViewItem renderingTreeViewItem, [NotNull] DragEventArgs dragEventArgs)
        {
            Assert.ArgumentNotNull(renderingTreeViewItem, nameof(renderingTreeViewItem));
            Assert.ArgumentNotNull(dragEventArgs, nameof(dragEventArgs));

            var contextMenu = new ContextMenu
            {
                PlacementTarget = this
            };

            foreach (var dynamicProperty in renderingTreeViewItem.Rendering.DynamicProperties)
            {
                var bindMode = (BindingMode)dynamicProperty.Attributes["bindmode"];
                if (bindMode == BindingMode.Server || bindMode == BindingMode.Write)
                {
                    continue;
                }

                var property = dynamicProperty;

                var menuItem = new MenuItem
                {
                    Header = dynamicProperty.Name
                };

                menuItem.Click += (sender, args) => BindTo(renderingTreeViewItem.Rendering.GetDisplayName() + "." + property.Name);

                contextMenu.Items.Add(menuItem);
            }

            if (contextMenu.Items.Count > 0)
            {
                ContextMenu = contextMenu;
            }
        }
        public RenderingContext([NotNull] RenderingTreeViewItem renderingTreeViewItem)
        {
            Assert.ArgumentNotNull(renderingTreeViewItem, nameof(renderingTreeViewItem));

            RenderingTreeViewItem = renderingTreeViewItem;
            PageModel             = renderingTreeViewItem.DeviceTreeViewItem.Device.PageModel;
        }
        public void HandleDragOver([NotNull] RenderingTreeViewItem renderingTreeViewItem, [NotNull] DragEventArgs e)
        {
            Assert.ArgumentNotNull(renderingTreeViewItem, nameof(renderingTreeViewItem));
            Assert.ArgumentNotNull(e, nameof(e));

            if (renderingTreeViewItem.Rendering.DynamicProperties.Count == 0)
            {
                return;
            }

            if (renderingTreeViewItem.Rendering.RenderingContainer != Rendering.RenderingContainer)
            {
                return;
            }

            e.Effects = DragDropEffects.Link;
        }
        public void RemoveRendering(LayoutDesignerItem renderingItem)
        {
            Assert.ArgumentNotNull(renderingItem, nameof(renderingItem));

            var selectedItems          = SelectedItems.ToList();
            RenderingTreeViewItem last = null;

            foreach (var rendering in selectedItems.OfType <RenderingTreeViewItem>())
            {
                rendering.RemoveRendering();
                last = rendering;
            }

            if (last != null)
            {
                last.DeviceTreeViewItem.Device.PageModel.RaiseModified();
            }
        }