2010-05-04 9 views
1

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

Пример: alt text http://biztimes.ru/toolbar.jpg

+0

Я новичок в WPF. Можете ли вы опубликовать код о том, как вы это сделали, антонладчэн? Несколько строк кода были бы лучше для быстрого запуска. Благодаря! – GRF

ответ

4

Кнопка переполнения, к сожалению, имеет фиксированный фон. Точнее, в шаблоне по умолчанию устанавливается статическое значение. См. this MSDN forum thread или MSDN, если вы хотите получить их копию. Или This tool from Chris Sells

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

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

+0

Спасибо за ответ! – antongladchenko

1

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

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> 
+0

Это работает, область переполнения имеет новый Фон теперь. Тем не менее, кнопка переполнения все еще является уродливым ребенком. Думаю, мне все равно придется менять весь шаблон. –

Смежные вопросы