2010-03-02 5 views
3

Dans Silverlight 4, il est possible d'utiliser un style implicite - et c'est incroyable! Mais que faire si je veux appliquer un style à tous mes Boutons, CheckBoxes et RadioButtons (tout en héritant de ButtonBase)? Je ne peux pas définir TargetType sur le Style à ButtonBase - cela ne fonctionne pas. Ai-je besoin de créer un style pour chacun des 3 types de contrôle?Silverlight 4 et le style implicite

Répondre

4
+0

OK il est donc pas possible :( Citation du lien: "Notez que le type cible doit correspondre exactement à un style typé à appliquer.Par exemple, si vous spécifiez la clé du style, l'élément cible peut être une sous-classe de la cible. Type. Mais un style tapé est généralement appliqué aux éléments dont le type correspond exactement! Ceci est fait pour éviter les surprises. Par exemple, vous avez peut-être créé un Style pour tous les ToggleButtons dans votre application et vous ne voulez pas que ce style soit appliqué à des CheckBoxes (qui dérivent du ToggleButton). " – thomasmartinsen

+0

yups c'est le cas pour éviter les surprises non désirées de l'héritage –

1

xamlgeek,

Les styles implicites suivants fonctionnent bien pour moi. Je crée d'abord des noms/styles à clés, en utilisant les styles communs de BasedOn où possible. Ensuite, je crée simplement les styles implicites BasedOn les styles nommés/... à clé

<Style x:Key="BaseStyle" TargetType="Control"> 
    <Setter Property="FontFamily" Value="{StaticResource FontFamily}" /> 
    <Setter Property="FontSize" Value="{StaticResource FontSize}" /> 
    <Setter Property="Foreground" Value="{StaticResource FontBrush}" /> 
</Style> 
<Style x:Key="BaseStyleCentered" TargetType="Control" BasedOn="{StaticResource BaseStyle}"> 
    <Setter Property="VerticalAlignment" Value="Center" /> 
</Style> 
<Style x:Key="CommonCheckBox" TargetType="CheckBox" BasedOn="{StaticResource BaseStyleCentered}"> 
    <Setter Property="Cursor" Value="Hand" /> 
</Style> 
<Style x:Key="CommonRadioButton" TargetType="RadioButton" BasedOn="{StaticResource BaseStyleCentered}"> 
    <Setter Property="Cursor" Value="Hand" /> 
</Style> 
<Style x:Key="CommonButton" TargetType="Button" BasedOn="{StaticResource BaseStyleCentered}"> 
    <Setter Property="Cursor" Value="Hand" /> 
    <Setter Property="Padding" Value="10,0,10,0" /> 
    <Setter Property="MinWidth" Value="{StaticResource ButtonWidth}" /> 
    <Setter Property="MinHeight" Value="{StaticResource ButtonHeight}" /> 
</Style> 
<Style TargetType="CheckBox" BasedOn="{StaticResource CommonCheckBox}"> 
</Style> 
<Style TargetType="RadioButton" BasedOn="{StaticResource CommonRadioButton}"> 
</Style> 
<Style TargetType="Button" BasedOn="{StaticResource CommonButton}"> 
</Style> 

Bonne chance,

Jim

YinYangMe, YinYangMoney et FaceToFaceSoftware

+1

Vos styles ne sont pas des styles implicites Ce sont des styles nommés Les styles implicites n'ont pas de clé et seulement un TargetType – Jehof

+0

@Jehof: Désolé, j'ai corrigé mon explication dans l'extrait de code ci-dessus –

Questions connexes