Можно ли динамически обновлять отсеченный предварительный просмотр миниатюр на основе изменяющегося ограничивающего прямоугольника элемента управления? - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть 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?

Я также не уверен, стоит ли эта функция по желанию пользователя.

Спасибо.

...