static void CreateDragAdorner() { DataTemplate template = GetDragAdornerTemplate(m_DragInfo.VisualSource); if (template != null) { UIElement rootElement = (UIElement)Application.Current.MainWindow.Content; UIElement adornment = null; if (m_DragInfo.Data is IEnumerable && !(m_DragInfo.Data is string)) { if (((IEnumerable)m_DragInfo.Data).Cast<object>().Count() <= 10) { ItemsControl itemsControl = new ItemsControl(); itemsControl.ItemsSource = (IEnumerable)m_DragInfo.Data; itemsControl.ItemTemplate = template; // The ItemsControl doesn't display unless we create a border to contain it. // Not quite sure why this is... Border border = new Border(); border.Child = itemsControl; adornment = border; } } else { ContentPresenter contentPresenter = new ContentPresenter(); contentPresenter.Content = m_DragInfo.Data; contentPresenter.ContentTemplate = template; adornment = contentPresenter; } if (adornment != null) { adornment.Opacity = 0.5; DragAdorner = new DragAdorner(rootElement, adornment); } } }