Как изменить стиль для одного LayoutDocument? - PullRequest
0 голосов
/ 27 января 2020

Предположим, у меня есть этот xaml:

<avalonDock:DockingManager>
    <avalonDock:LayoutRoot>
        <avalonDock:LayoutPanel Orientation="Horizontal">
            <avalonDock:LayoutDocumentPaneGroup>
                <avalonDock:LayoutDocumentPane>
                    <avalonDock:LayoutDocument Title="Main Panel">
                    </avalonDock:LayoutDocument>
                </avalonDock:LayoutDocumentPane>
                <avalonDock:LayoutDocumentPane>
                    <avalonDock:LayoutDocument Title="Panel 02">
                    </avalonDock:LayoutDocument>
                </avalonDock:LayoutDocumentPane>
                <avalonDock:LayoutDocumentPane>
                    <avalonDock:LayoutDocument Title="Panel 03">
                    </avalonDock:LayoutDocument>
                </avalonDock:LayoutDocumentPane>
                <!-- 
                Other LayoutDocumentPane's here...
                -->
            </avalonDock:LayoutDocumentPaneGroup>
        </avalonDock:LayoutPanel>
    </avalonDock:LayoutRoot>
</avalonDock:DockingManager>

Теперь мне нужно поставить другой стиль только для "Основной панели", например, на красном фоне. Все остальные панели («Панель 02», «Панель 03» и т. Д. c ...) должны быть неизменными. Все примеры, которые я нашел, должны изменить всю тему, но мне нужно изменить только один элемент LayoutDocument.

1 Ответ

1 голос
/ 07 мая 2020

Вам нужно использовать DataTemplates, TemplateSelector или Converters, и вам нужно дать им что-то, что может различать элементы, которые вы хотите изменить, и элементы, которые вы не хотите менять.

A WPF Converter в свойстве style может, например, использовать заголовок (если он уникален для вашего приложения), чтобы вернуть соответствующий стиль для каждого документа. Но это было бы очень плохой реализацией - используйте свойство перечисления в классе, чтобы сделать его более надежным.

Еще лучшим решением является использование TemplateSelector, основанное на иерархии классов инерционирующих классов над модель представления вашего документа - но это более сложная задача - но есть несколько примеров, на которые стоит обратить внимание: Вот пример, который делает то же самое для LayoutAnchorables .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...