2010-05-04 8 views
1

Un problème est survenu. Lorsque je modifie la couleur d'arrière-plan de la barre d'outils WPF Bouton de dépassement dans le coin droit ne change pas de couleur. Comment le réparer?Couleur de OverFlowButton dans la barre d'outils WPF

Exemple: alt text http://biztimes.ru/toolbar.jpg

+0

Je suis un débutant dans WPF. Pouvez-vous poster un code sur la façon dont vous l'avez fait, antongladchenko? Quelques lignes de code seraient mieux pour obtenir un démarrage rapide. Merci! – GRF

Répondre

4

Le bouton de débordement a malheureusement un arrière-plan fixe. Plus précisément, il est défini sur une valeur statique dans le modèle par défaut. Voir this MSDN forum thread ou MSDN si vous voulez en obtenir une copie. Ou This tool from Chris Sells

Dans le modèle, vous verrez un ToggleButton, utilisé pour afficher/masquer le panneau de débordement. C'est celui à changer pour avoir l'effet que vous recherchez. Donc, la réponse à votre question est que vous devez inclure le style complet de la barre d'outils dans votre XAML et changer l'arrière-plan du bouton pour qu'il soit le même que le reste de la barre d'outils.

+0

Merci pour la réponse! – antongladchenko

1

J'ai eu le même problème que vous avez décrit ci-dessus. Ma solution est la suivante:

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; 
     } 
    } 
} 

échantillon 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

Cela fonctionne, la zone de débordement a maintenant le nouveau fond. Le bouton de débordement est toujours moche bébé bleu si. Je suppose que je dois encore changer le modèle entier. –

Questions connexes