Partage
  • Partager sur Facebook
  • Partager sur Twitter

Templates WPF -C#

    7 octobre 2011 à 10:32:42

    Bonjour à tous,

    Je suis en train de réaliser un projet WPF avec Visual studio 2010.
    J'ai une question concernant les templates:

    J'ai définit dans mon fichier MainWindow.xaml un bouton, que je veux modifier pour qu'il soit rond:

    <Button Template="{StaticResource buttonTemplate}" Content="Bouton 1" Name="Button_0"></Button>
    


    Donc, pour le redéfinir, j'ai ajouté dans le fichier App.xaml ,le code suivant:

    <ControlTemplate x:Key="buttonTemplate" TargetType="{x:Type Button}">
         <Ellipse Name="el1" Fill="Orange" Width="30" Height="30" />
    </ControlTemplate>
    


    Jusque là, c'est ok. Mais ce que je souhaite, c'est pouvoir depuis mon programme c#, modifier le template associé à mon bouton(Pour faire référence à un autre template).

    Seulement, après multiples recherches, je n'ai pas trouvé le moyen de modifier cette propriété...

    Avez vous des solutions ?

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      7 octobre 2011 à 15:29:34

      this.Button_0.Template = (ControlTemplate) Application.Current.Resources["anotherButtonTemplate"];
      


      Cela dit, si tu dois modifier la template du bouton depuis l'interface, c'est en général pas bon signe...qu'essaies-tu de faire ?
      • Partager sur Facebook
      • Partager sur Twitter
        8 octobre 2011 à 19:01:56

        Merci pour votre réponse.

        L'objectif est un jeu mastermind, avec donc un plateau de bouton rond ou lorsque l'on glisse un couleur dessus prend cette couleur. Qu’imagines tu comme autre solution?

        Merci
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          8 octobre 2011 à 21:09:04

          Définis le Fill de l'Ellipse de cette façon :
          Fill="{TemplateBinding Background}"

          Ensuite, définis le Background de ton Button selon ce qu'on lui glisse dessus.
          • Partager sur Facebook
          • Partager sur Twitter
            8 octobre 2011 à 22:36:59

            Ok je comprends le principe en revanche, pour définir le Background du bouton depuis le code, il faut mettre quoi comme valeur? C'est un type "Brush" qu'il me demande...

            Autre question, comment récupérer les objets contenus dans une grille (grille de 12*4 avec un bouton par cellule) ?

            Merci d'avance pour ta réponse !
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              9 octobre 2011 à 10:19:34

              Utilise les membres de la classe statique Brushes : Brushes.Blue, Brushes.Red...
              Ou alors tu peux te créer un SolidColorBrush ou autre Brush comme un LinearGradientBrush.


              Pour récupérer les objets contenus dans une grille, il y a moyen de le faire, mais c'est pas une bonne idée. Essaie plutôt de te créer un tableau 2D (sous la forme object[,] myTab = new object[12,4] en remplaçant object par ce que tu veux) dans ton code, et de représenter les objets là-dedans (en utilisant un enum pour les couleurs, par exemple).
              • Partager sur Facebook
              • Partager sur Twitter

              Templates WPF -C#

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown