Панель инструментов WPF - Пользовательский стиль - PullRequest
1 голос
/ 02 февраля 2011

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

<Style x:Key="{x:Type ToolBar}" TargetType="{x:Type ToolBar}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToolBar}">
                        <Border>
                            <DockPanel VerticalAlignment="Stretch" Height="38">
                            </DockPanel>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

Однако, если я добавляю элементы на панель инструментов, эти элементы не отображаются:

<ToolBar x:Name="myToolbar">
        <Label>test</Label>
    </ToolBar>

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

Может кто-нибудь дать мне подсказку?

Ответы [ 2 ]

5 голосов
/ 02 февраля 2011

Проблема в том, что вы заменили шаблон панели управления своим собственным.Но вы не указали в этом шаблоне, где элементы должны быть показаны.Обычно это можно сделать, добавив ItemsPresenter:

<ControlTemplate TargetType="{x:Type ToolBar}">
    <Border>
        <DockPanel VerticalAlignment="Stretch" Height="38">
            <ItemsPresenter/>
        </DockPanel>
    </Border>
</ControlTemplate>

или установив IsItemsHost="True" на панели внутри шаблона:

<ControlTemplate TargetType="{x:Type ToolBar}">
    <Border>
        <DockPanel IsItemsHost="True" VerticalAlignment="Stretch" Height="38">
        </DockPanel>
    </Border>
</ControlTemplate>

Но, если вы попытаетесь заменитьПанель элементов для панели инструментов (как в моем втором примере), она не будет работать, потому что панель инструментов ожидает, что ToolBarPanel будет панелью элементов.

0 голосов
/ 02 февраля 2011

Шаблон определяет способ визуализации элемента управления, для некоторых элементов управления все находится внутри шаблона, для других элемент управления ожидает найти именованные элементы в шаблоне, которыми он будет манипулировать. Если вы посмотрите на шаблон панели инструментов, то увидите, что панель инструментов ожидает найти элемент с именем PART_ToolBarPanel и элемент с именем PART_ToolBarOverflowPanel в шаблоне:

http://msdn.microsoft.com/en-us/library/aa970772.aspx

Например, ему нужно найти элемент с именем PART_ToolBarPanel, чтобы добавить элементы на панель инструментов.

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

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