Возникла проблема. Когда я меняю цвет фона панели инструментов WPF, кнопка переполнения в правом углу не меняет цвет. Как это исправить?Цвет OverFlowButton в панели инструментов WPF
Пример: alt text http://biztimes.ru/toolbar.jpg
Возникла проблема. Когда я меняю цвет фона панели инструментов WPF, кнопка переполнения в правом углу не меняет цвет. Как это исправить?Цвет OverFlowButton в панели инструментов WPF
Пример: alt text http://biztimes.ru/toolbar.jpg
Кнопка переполнения, к сожалению, имеет фиксированный фон. Точнее, в шаблоне по умолчанию устанавливается статическое значение. См. this MSDN forum thread или MSDN, если вы хотите получить их копию. Или This tool from Chris Sells
В шаблоне вы увидите ToggleButton, который используется для отображения/скрытия панели переполнения. Это тот, который изменится, чтобы иметь тот эффект, который вы ищете.
Итак, ответ на ваш вопрос заключается в том, что вам нужно включить полный стиль панели инструментов в свой XAML и изменить фон кнопки так же, как и на остальной панели инструментов.
Спасибо за ответ! – antongladchenko
У меня была такая же проблема, как вы описали выше. Мое решение заключается в следующем:
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>
Это работает, область переполнения имеет новый Фон теперь. Тем не менее, кнопка переполнения все еще является уродливым ребенком. Думаю, мне все равно придется менять весь шаблон. –
Я новичок в WPF. Можете ли вы опубликовать код о том, как вы это сделали, антонладчэн? Несколько строк кода были бы лучше для быстрого запуска. Благодаря! – GRF