Отделение реализации панелей инструментов WPF - PullRequest
0 голосов
/ 15 марта 2012

Я пытаюсь инкапсулировать разные панели инструментов в разные элементы управления, чтобы элементы управления, относящиеся к одному действию, находились на одной панели инструментов, а элементы управления, относящиеся к другому, - на другой панели инструментов. Это очень распространенная практика.

Моей первой попыткой инкапсуляции было создание пользовательского элемента управления для каждой панели инструментов. Таким образом, панель инструментов типа A будет выглядеть так:

    <ToolBarTray Name="toolBarTray1" >
        <ToolBar Name="toolBar1">
            Type A Control elements and event handler attributes
        </ToolBar>
    </ToolBarTray>

Панель инструментов типа B выглядит следующим образом:

    <ToolBarTray Name="toolBarTray1" >
        <ToolBar Name="toolBar1">
            Type B Control elements and event handler attributes
        </ToolBar>
    </ToolBarTray>

Основные окна выглядят так:

    <DockPanel  Name="dockPanel1" LastChildFill="True">
        <local:TypeAToolBar x:Name="loggingToolbar" DockPanel.Dock="Top" />
        <local:TypeBToolBar x:Name="combinationsToolbar" DockPanel.Dock="Top" />
        ...

Это работает, но панели инструментов "чужие" друг для друга: например, я не могу перетащить нижнюю, чтобы она находилась на одной линии с первой - я думаю, это потому, что они не разделяют тот же ToolBarTray.

Попытка «вынести» элемент ToolBarTray в главное окно и оставить элементы ToolBar в качестве корней пользовательских элементов управления, однако вызывает исключение, поскольку ToolBarTray ожидает дочерние элементы панели инструментов, тогда как TypeAToolbar и TypeBToolBar являются пользовательскими элементами управления.

Итак, мой вопрос: Как мне добиться обычной функциональности панелей инструментов при сохранении реализации каждой отдельной части?

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