2009-06-03 14 views
6

Comment forcer les contrôles utilisateur dans WPF situés dans une barre d'outils pour utiliser le style de bouton par défaut de la barre d'outils?Création du style du bouton ToolBar pour UserControls dans la barre d'outils

J'ai un contrôle utilisateur simple appelé ImageButton qui a XAML quelque chose comme ceci:

<UserControl x:Class="myNameSpace.ImageButtonUserControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Name="imageButton" 
    > 
    <Button Style="{Binding ElementName=imageButton, Path=ButtonStyle}"> 
     <StackPanel Orientation="Horizontal"> 
      <Image Source="{Binding ElementName=imageButton, Path=ImageSource}" 
        VerticalAlignment="Center" 
        /> 
      <TextBlock Text="{Binding ElementName=imageButton, Path=Text}" 
         Style="{Binding ElementName=imageButton, Path=TextStyle}" 
         VerticalAlignment="Center" 
         /> 
     </StackPanel> 
    </Button> 
</UserControl> 

J'ai quelques propriétés de dépendance dans le code derrière pour les chemins de liaison et tout fonctionne bien.

C'est jusqu'à ce que je l'ai mis dans une barre d'outils. Normalement, lorsque vous placez des boutons dans une barre d'outils, ils sont redéfinis par la barre d'outils pour ressembler à des boutons de barre d'outils. J'ai découvert comment je peux changer ce style (voir ToolBar.ButtonStyleKey.) Mais comment puis-je appliquer le style déjà défini à la propriété de contrôle de style de bouton de mon contrôle utilisateur?

Répondre

19

Ooh, mes excuses! J'ai mal interprété votre question. Essayez ceci:

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"> 
    Hello, world! 
</Button> 

Le style cible uniquement les boutons, il ne peut donc être appliqué qu'aux boutons. (Ce qui ne sera pas un problème par l'apparence de votre commentaire.)

0

Vous auriez besoin d'une puissante magie noire pour l'obtenir créer un nouveau style fonctionnel pour votre commande usercontrol automatiquement.Il y a des styles intégrés pour chaque type de contrôle intégré que vous pouvez ajouter à la barre d'outils (Notez que ToolBar.ButtonStyleKey n'est pas seul.) Vous devrez créer et appliquer votre propre style qui correspond aux éléments de la barre d'outils standards vous.

+0

Je ne veux pas en créer un automatiquement, je veux juste appliquer le style de bouton existant au bouton à l'intérieur de mon UserControl. – Ray

4

J'ai trouvé un moyen, qui semble fonctionner, même si je suis intéressé par d'autres moyens de résoudre ce.

J'ai ajouté un gestionnaire d'événement chargé à mon UserControl et je l'ai mis dedans.

if (button.Style == null && this.Parent is ToolBar) 
{ 
    button.Style = (Style)FindResource(ToolBar.ButtonStyleKey); 
} 

Où bouton est le nom du bouton dans mon UserControl.