Prism, адаптер области AvalonDock (обработка события закрытия DocumentPane) - PullRequest
1 голос
/ 11 февраля 2011

У меня есть решение Prism v4 / MEF / WPF, которое загружает представления модулей в панель документов в моей док-станции Avalon.Я пытаюсь создать дескриптор для события закрытия (когда нажата кнопка «X», чтобы закрыть панель документов).Я не могу понять, это часть моего класса RegionAdapter, которая создает DockableContent, а также где я пытаюсь обработать событие close (я пытался с 3 событиями):

private void OnViewsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e, IRegion region, DocumentPane regionTarget)
{
    if (e.Action == NotifyCollectionChangedAction.Add)
    {
        foreach (object item in e.NewItems)
        {
            UIElement view = item as UIElement;

            if (view != null)
            {
                DockableContent newContentPane = new DockableContent()
                {
                    Content = item,
                    Title = ((ITabViewInfo)view).TabViewTitle
                    Icon = ((ITabViewInfo)view).TabViewIcon
                };
                newContentPane.Closed += new EventHandler(newContentPane_Closed);
                newContentPane.Manager.DocumentClosed +=new EventHandler(Manager_DocumentClosed);
                newContentPane.Manager.DocumentClosing +=new EventHandler<System.ComponentModel.CancelEventArgs>(Manager_DocumentClosing);

                regionTarget.Items.Add(newContentPane);
                newContentPane.Activate();
            }
        }
    }
    else if (e.Action == NotifyCollectionChangedAction.Remove)
    {
        // this is never hit
        Debug.WriteLine("removed");
    }
}

Эти событияникогда не нажимать (у меня есть debug.writeline в каждом):

        newContentPane.Closed += new EventHandler(newContentPane_Closed);
        newContentPane.Manager.DocumentClosed +=new EventHandler(Manager_DocumentClosed);
        newContentPane.Manager.DocumentClosing +=new EventHandler<System.ComponentModel.CancelEventArgs>(Manager_DocumentClosing);

Как мне обработать событие закрытия DocumentPane?

Код, который я использовал для этого RegionAdapter, основаниз http://blog.raffaeu.com/archive/2010/07/04/wpf-and-prism-tab-region-adapter-part-02.aspx

1 Ответ

1 голос
/ 12 февраля 2011

Нашел ответ здесь http://avalondock.codeplex.com/discussions/231982?ProjectName=avalondock

Пришлось добавить:

IsCloseable = true
HideOnClose = false
...