2010-07-28 9 views
1

Je suis sous Windows XP sur mon ordinateur et un autre ordinateur fonctionne sous Windows XP.WPF affichant différemment sur différents ordinateurs

Dans mon application WPF, j'ai changé les styles de mes boutons apparaissent comme si elles ne sont pas en surbrillance quand roulé sur, cliqué, etc.

Sur mon ordinateur, c'est le comportement qui se produit. Sur l'autre système Windows XP, je vois des contours des boutons avec lesquels je les contourne ou clique.

Des idées sur pourquoi cela se passe-t-il?

EDIT

Voici le bouton lui-même

 <Button Click="Next_Click" Width="100" VerticalAlignment="Center" BorderThickness="0" BorderBrush="Black" Background="Black" IsTabStop="False" DockPanel.Dock="Right" HorizontalAlignment="Left" Height="154" Name="NextOffers"> 
      <Image Source="Images/offer_right_arrow.jpg" Width="100" Height="154" MaxWidth="100" MaxHeight="154" HorizontalAlignment="Left" VerticalAlignment="Top" MinWidth="100" MinHeight="154" ></Image> 
     </Button> 

aussi ce style, aussi.

<Style TargetType="{x:Type ListBoxItem}" x:Key="ListBoxItemStyle"> 
    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBox_MouseLeftButtonDown"></EventSetter> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBoxItem"> 
       <Border Name="Border" Padding="0,0,2,0" SnapsToDevicePixels="true"> 
        <ContentPresenter /> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsSelected" Value="true"> 
         <Setter TargetName="Border" Property="Background" Value="Black"></Setter> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Je n'ai pas de modèle pour ce bouton, évidemment.

Je charge dynamiquement mes ResourceDictionaries dans le code.

+0

Les deux ordinateurs ont-ils le même thème Windows appliqué? – AndrewS

+0

Non, ils ne le font pas. Le thème de mon ordinateur de travail est contrôlé par la politique de groupe d'AD (boo) et l'autre ordinateur est contrôlé par la politique de groupe d'un autre bureau de l'entreprise. – TheGeekYouNeed

+1

vous mieux appliquer des styles personnalisés pour les éléments .. semble que vos contrôles obtiennent des styles de la valeur par défaut du système, c'est pourquoi il semble différent dans d'autres thèmes. –

Répondre

2

Il semble que vous ayez besoin d'un modèle de contrôle personnalisé pour vos boutons. Le modèle de contrôle par défaut pour la plupart des contrôles WPF dépend du thème Windows sélectionné, de sorte qu'un bouton suit le thème si vous êtes sur le thème Windows Classic, Aero, Royale ou autre. Si vous voulez qu'il ressemble exactement le même quel que soit le système d'exploitation ou le thème que l'utilisateur a choisi, vous économiserez beaucoup de maux de tête en utilisant un modèle de contrôle personnalisé.

Google "Montrez-moi le modèle" pour une application qui vous donnera la source du modèle de contrôle (XAML) pour chaque thème. C'est un bon point de départ pour créer des modèles personnalisés.

1

Le problème que vous voyez est probablement dû à la valeur par défaut ButtonChrome. Vous pouvez appliquer toutes sortes de style, mais si vous laissez ce Chrome intact, le thème de Windows va faire sa tête hideuse.

Vous devrez recréer le ControlTemplate lui-même.

+0

Si j'utilise un modèle de contrôle, dois-je définir explicitement l'événement click dans le modèle? – TheGeekYouNeed

+0

Non; J'ai redessiné les boutons afin qu'ils ne montrent pas les styles spécifiques à l'OS/thème, et je n'ai jamais eu à configurer les événements de clic. Les contrôles WPF sont "sans apparence", mais nous avons l'ensemble des contrôles que nous faisons parce que chacun a un comportement différent. * Donc, vous pouvez relooker un bouton pour, disons, montrer une vidéo, pas parce que vous vouliez montrer la vidéo mais parce que vous voulait le comportement d'un bouton. – Jay