У меня есть Window
, который содержит список элементов, расположенных в WrapPanel
, их размер можно изменить, их положение также можно изменить, поскольку я использую AvalonDock, а панель может располагаться над другой частью Window
.Их порядок может быть изменен, новые элементы могут быть добавлены, существующие элементы могут быть удалены, элементы также могут быть отфильтрованы.Я хочу поместить в обрезанный эскиз предварительного просмотра один элемент, выбранный автоматически (первый активный элемент, не в смысле выделения мышью или фокусировки) или пользователем (позднее).
Я пробовал кодниже.Соответствующие документы Microsoft здесь и здесь .Еще один мой вопрос (теперь бесполезный, поскольку я использую WPF вместо WinForms): Как использовать ITaskbarList3.RegisterTab для отображения изображения на вкладке внутри всплывающей панели задач? .
В настоящее время у меня естьследующий базовый обработчик CollectionChanged
события ObservableCollection
ViewModels.
private void VMs_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (ClockVMCollection.VMs.Count == 0)
{
MainWindow.MyTaskbarItemInfo.ThumbnailClipMargin = new System.Windows.Thickness(0d);
}
else
{
var el = MainWindow.MyViewsGrid.MyFlowView.MyItemsControl.
ItemContainerGenerator.ContainerFromIndex(0) as System.Windows.FrameworkElement;
if (el == null)
{
return;
}
System.Windows.Rect r = el.TransformToVisual(MainWindow)
.TransformBounds(System.Windows.Controls.Primitives.LayoutInformation.GetLayoutSlot(el));
MainWindow.MyTaskbarItemInfo.ThumbnailClipMargin = new System.Windows.Thickness(r.Left, r.Top,
r.Right, r.Bottom);
}
}
Мне нужно его значительно улучшить, но я хочу посмотреть, возможно ли то, что я хочу реализовать.В настоящее время я думаю, что это невозможно.
Я хотел бы иметь возможность синхронизировать предварительный просмотр уменьшенного эскиза с Control
, который не всегда находится на поверхности окна (он может быть перемещен другим элементом управления).
Возможно, я смогу решить вопрос о поиске и поддержании позиции и размера элемента управления (помощь в этом будет полезна), но что я могу сделать, если он находится под привязкой AvalonDock?
Я также не уверен, стоит ли эта функция по желанию пользователя.
Спасибо.