2017-09-25 6 views
0

Alors peut-être mon approche de ce problème est erronée, mais ici ça va: J'utilise un bouton de MahApps.Metro cadre qui est déjà stylé et comme contenu il reçoit une icône . Dans mon projet, je l'ai utilisé à plusieurs reprises le code comme ceci:Ajouter un bouton créé dans App.xaml à une vue

<Button 
    Width="30" 
    Height="30" 
    HorizontalContentAlignment="Center" 
    VerticalContentAlignment="Center" 
    BorderBrush="{DynamicResource AccentBaseColorBrush}" 
    FocusVisualStyle="{DynamicResource MahApps.Metro.Styles.MetroCircleFocusVisual}" 
    FontSize="16" 
    Style="{DynamicResource MahApps.Metro.Styles.MetroCircleButtonStyle}"> 
    <iconPacks:PackIconModern 
     Width="15" 
     Height="15" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center" 
     Foreground="{DynamicResource AccentBaseColorBrush}" 
     Kind="Refresh" /> 
    <Button.ToolTip> 
     <Label 
      Content="{x:Static properties:Resources.TooltipUpdate}" 
      FontWeight="DemiBold" /> 
    </Button.ToolTip> 
</Button> 

This is what it looks like

Voici comment regarder les boutons. (Un activé, deux désactivé)

Et comme vous pouvez le voir, il est beaucoup de code à utiliser à plusieurs reprises dans le projet avec de nombreuses vues. J'ai donc pensé à l'ajouter à App.xaml et à les réutiliser en changeant la commande (et la marge) dans les vues.
Cependant, je ne suis pas sûr de savoir comment faire cela. J'ai essayé d'ajouter le code de bouton entier comme vous le voyez et en ajoutant juste x:Key à lui, mais je ne sais pas comment l'utiliser alors dans la vue. Je sais comment utiliser des styles et des modèles "globaux", mais c'est déjà un style et un modèle de contrôle finis et la seule chose qui change entre les boutons est la commande et parfois l'info-bulle.

Répondre

3

Créer une Style avec un x:Key dans App.xaml où vous définissez toutes les valeurs de propriété par défaut à l'aide setters:

<Style x:Key="myStyle" TargetType="Button" BasedOn="{StaticResource MahApps.Metro.Styles.MetroCircleButtonStyle}"> 
    <Setter Property="Width" Value="30" /> 
    <Setter Property="Height" Value="30" /> 
    <Setter Property="HorizontalContentAlignment" Value="Center" /> 
    <Setter Property="VerticalContentAlignment" Value="Center" /> 
    <Setter Property="BorderBrush" Value="{DynamicResource AccentBaseColorBrush}" /> 
    <Setter Property="Content"> 
     <Setter.Value> 
      <iconPacks:PackIconModern 
         Width="15" 
         Height="15" 
         HorizontalContentAlignment="Center" 
         VerticalContentAlignment="Center" 
         Foreground="{DynamicResource AccentBaseColorBrush}" 
         Kind="Refresh" /> 
     </Setter.Value> 
    </Setter> 
</Style> 

Vous pouvez ensuite appliquer le Style à tout élément Button et supplantent tous les biens que vous voulez:

<Button Style="{DynamicResource myStyle}" Command="{Binding YourCommand}" Margin="10"> 
    <iconPacks:PackIconModern 
         Width="15" 
         Height="15" 
         HorizontalContentAlignment="Center" 
         VerticalContentAlignment="Center" 
         Foreground="{DynamicResource AccentBaseColorBrush}" 
         Kind="Add" /> 
</Button> 
+0

Merci beaucoup (comme d'habitude)! Ça marche. – Desomph