Цвет OverFlowButton на панели инструментов WPF - PullRequest
1 голос
/ 04 мая 2010

Возникла проблема. Когда я меняю цвет фона панели инструментов WPF, кнопка Переполнение в правом углу не меняет цвет. Как это исправить?

Пример: альтернативный текст http://biztimes.ru/toolbar.jpg

Ответы [ 2 ]

4 голосов
/ 04 мая 2010

К сожалению, кнопка переполнения имеет фиксированный фон. Точнее, он установлен на статическое значение в шаблоне по умолчанию. См. эту ветку форума MSDN или MSDN , если вы хотите получить их копию. Или Этот инструмент от Криса Селлса

В шаблоне вы увидите ToggleButton, который используется для отображения / скрытия панели переполнения. Это то, что нужно изменить, чтобы получить эффект, который вы ищете.

Итак, ответ на ваш вопрос заключается в том, что вам нужно включить полный стиль панели инструментов в свой XAML и изменить фон кнопки таким же, как и остальная часть панели инструментов.

1 голос
/ 22 октября 2014

У меня была та же проблема, что вы описали выше. Мое решение следующее:

using System.Windows.Controls.Primitives;
using System.Windows.Media;

namespace WPF.Controls
{
    public class ToolBar : System.Windows.Controls.ToolBar
    {
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            var overflowPanel = base.GetTemplateChild("PART_ToolBarOverflowPanel") as ToolBarOverflowPanel;
            if (overflowPanel != null)
            {
                overflowPanel.Background = OverflowPanelBackground ?? Background;
                overflowPanel.Margin = new Thickness(0);
            }
        }

        public Brush OverflowPanelBackground
        {
            get;
            set;
        }
    }
}

Образец XAML:

<Window
    x:Class="WPF.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:src="clr-namespace:WPF.Controls">

<ToolBarTray Background="White">
    <wpf:ToolBar Background="Pink" OverflowPanelBackground="Peru" Band="1" BandIndex="1" Width="50">
        <Button Content="Cut" />
        <Button Content="Copy" />
        <Button Content="Paste" />
    </wpf:ToolBar>
    <wpf:ToolBar Background="Aqua" Band="2" BandIndex="1" Width="70">
        <Button Content="Undo" />
        <Button Content="Redo" />
    </wpf:ToolBar>
    <wpf:ToolBar OverflowPanelBackground="Yellow" Band="2" BandIndex="2" Width="100">
        <Button Content="Paint"/>
        <Button Content="Spell"/>
        <Separator/>
        <Button Content="Save"/>
        <Button Content="Open"/>
    </wpf:ToolBar>
</ToolBarTray>

</Window>
...