protected override bool CanPasteIntoItem(IPasteResult pasteResult, AssetCompositeItemViewModel item, out string error) { // try to paste as hierarchy var hierarchy = pasteResult.Items[0].Data as AssetCompositeHierarchyData <UIElementDesign, UIElement>; if (hierarchy != null) { var contentControl = item as ContentControlViewModel; if (contentControl != null && hierarchy.RootParts.Count > 1) { error = $"({contentControl.Name}) can only have one child as content. {hierarchy.RootParts.Count} elements can't be pasted into it."; return(false); } } return(base.CanPasteIntoItem(pasteResult, item, out error)); }
private static void ExpandElementRecursively([NotNull] TreeView treeView, AssetCompositeItemViewModel item) { // Since treeview can have virtualization and also a lot of items, we dispatch the recursive expansion amongst successive frames treeView.Dispatcher.BeginInvoke(new Action(() => { var viewItem = treeView.GetTreeViewItemFor(item); if (viewItem == null) { return; } viewItem.IsExpanded = true; foreach (var child in item.EnumerateChildren()) { ExpandElementRecursively(treeView, child); } }), DispatcherPriority.ApplicationIdle); }