Как переключаться между вкладками документа в AvalonDock 2

Я создал небольшое приложение, использующее AvalonDock 2. Я привязал свои модели представления к диспетчеру стыковки, могу создавать и удалять документы, все в порядке. Однако есть одна вещь, с которой я могу приступить к работе: когда у меня открыто несколько документов, я не могу сделать определенную вкладку документа активной и видимой вкладкой (например, если бы я щелкнул заголовок вкладки) из кода.

Я привязал свойство «ActiveContent» и установил его для документа, который хочу сделать активным и видимым, но это не помогает.

Может кто-нибудь дать мне совет, как это сделать?


person Andreas    schedule 25.11.2015    source источник


Ответы (2)


После некоторого исследования это оказалось тривиальной задачей. Актуальная проблема - отсутствие документации по таким тривиальным задачам. Итак, вот ответ для всех, кто борется с той же проблемой:

Каждый LayoutItem имеет свойство с именем IsSelected. Если для него установлено значение «true», вкладка, представляющая LayoutItem, переключается в режим просмотра.

person Andreas    schedule 02.12.2015
comment
Андреас, это полезный указатель, но было бы здорово, если бы вы могли привести пример (учитывая, что официальная документация освещает это). В противном случае это только половина ответа. - person CJBrew; 17.07.2017
comment
@CJBrew: Ну, честно говоря, для установки свойства объекта на значение не требуется образец. Может быть, вы объясните, какой образец вы хотели бы видеть. - person Andreas; 20.07.2017
comment
Конечно, статическая установка свойства в xaml тривиальна. Однако в этом контексте: какой элемент управления является LayoutItem? Как бы вы связали это свойство с моделью просмотра? - person CJBrew; 20.07.2017

Вот решение, отличное от MMVM, чтобы сделать макет активным или выбранным макетом в AvalonDock 2.

Код ниже написан в том же классе, что и ваш XAML MainWindow, где mainPanel - это имя вашего LayoutDocumentPane.

XAML

<xcad:LayoutDocumentPane x:Name="mainPanel">

Код позади:

public void MakeActiveLayout(String layoutTitle)
{
    foreach (LayoutDocument child in mainPanel.Children)
    {
        if(child.Title == layoutTitle)
        {
            child.IsSelected = true;
        }
    }
}
person Richard    schedule 28.08.2018