IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

[C#][XAML] bouton fermer pour canvas


Sujet :

Dotnet

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 75
    Points : 47
    Points
    47
    Par défaut [C#][XAML] bouton fermer pour canvas
    Bonjour, j'essaye de mettre sur un canvas un bouton fermer. J'avais précédemment réussi a le faire sur un tabControl en redéfinissant la classe tabitem. J'ai fait la même chose pour la classe canvas mais dans mon code xaml, lorsque je compile il me met une erreur à <Setter Property="Template">
    en me disant qu'il est impossible de trouver le Style Property "Template" sur le type redéfini....

    Cela veut il dire qu'on ne peut faire de template sur des canvas? Dans ce cas-la est ce qu'il existe une autre solution pour rajouter un bouton fermer à un canvas?

    merci de vos réponses
    ++

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu peux recommencer en etant plus clair, voir même en montrant du code ?

    Car là, c'est difficilement compréhensible.....

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 75
    Points : 47
    Points
    47
    Par défaut
    Désolé mais ce n'est pas trop facile à expliquer..je reprends

    En fait je veux redéfinir ma classe canvas (en l'appellant canvasComposant par exemple) afin de créer des canvas avec un bouton fermer (une petite croix en haut à droite).

    Voila ce que j'ai écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <Style TargetType="{x:Type local:canvasComposant}">
        <Style.Resources>      
          <LinearGradientBrush x:Key="ButtonOverBackground" EndPoint="0,1" StartPoint="0,0">
            <GradientStop Color="#FFFAFAFA" Offset="0"/>
            <GradientStop Color="#FFE0E0E3" Offset="1"/>
          </LinearGradientBrush>
     
          <LinearGradientBrush x:Key="ButtonPressedBackground" EndPoint="0,1" StartPoint="0,0">
            <GradientStop Color="#FFE0E0E2" Offset="0"/>
            <GradientStop Color="#FFF8F8F8" Offset="1"/>
          </LinearGradientBrush>
     
          <SolidColorBrush x:Key="ButtonNormalBorder" Color="#FF969696"/>
     
          <Style x:Key="fermerComposant" TargetType="{x:Type Button}">        
            <Setter Property="Template">
              <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                  <Grid>
                    <Border SnapsToDevicePixels="True" x:Name="Chrome" Background="{TemplateBinding  Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2" Opacity="0" />
                    <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
                  </Grid>
                  <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                      <Setter Property="Opacity" TargetName="Chrome" Value="1"/>
                      <Setter Property="Background" TargetName="Chrome" Value="{DynamicResource ButtonOverBackground}" />
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                      <Setter Property="Opacity" TargetName="Chrome" Value="1"/>
                      <Setter Property="Background" TargetName="Chrome" Value="{DynamicResource ButtonPressedBackground}" />
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="false">
                      <Setter Property="Foreground" Value="#ADADAD"/>
                    </Trigger>
                  </ControlTemplate.Triggers>
                </ControlTemplate>
              </Setter.Value>
            </Setter>
          </Style>
        </Style.Resources>
     
        <Setter Property="Template">
     
        </Setter>
      </Style>
    C'est à la dernière ligne de ce code que j'ai l'erreur que j'ai marqué plus haut...Dans la balise <Setter Property="Template"></Setter>, je veux mettre les actions correspondant au bouton définit au - dessus mais d'après le message d'erreur, j'ai l'impression que ce n'est pas possible...

    Qu'en penses-tu?

    merci

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Essaye d'enlever tes ressources et de juste mettre ton Template dans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <Style TargetType="{x:Type local:canvasComposant}">    
        <Setter Property="Template">
          <Setter.Value>
              ......
          </Setter.Value>
        </Setter>
      </Style>
    Et regarde déjà si cela fonctionne

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 75
    Points : 47
    Points
    47
    Par défaut
    Malheureusement il me remet l'erreur :

    MC4005*: impossible de trouver le Style Property «*Template*» sur le type canvasComposant*

    C'est pour cela que je te disais tout a leur que j'ai l'impression qu'il n'accepte pas les templates sur les canvas...

    De plus, j'ai remmarqué que si je fais hériter ma classe canvasComposant d'un tabitem, ou d'un TextBox par exemple, le template ne pose pas de pb. En revanche si elle hérite de Canvas ou Panel, ca plante...

    Mise à part cette solution que je vais devoir laisser tomber à mon avis, il n'y a pas d'autres moyens d'après toi de rajouter un bouton fermer que redéfinir une classe?

    merci

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Il n'est peut-être pas possible de modifier le template d'un Canvas.....

    Essaye ceci à tout hasard:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <Style TargetType="{x:Type local:canvasComposant}" BasedOn="{StaticResource {x:Type Canvas}}">    
        <Setter Property="Template">
          <Setter.Value>
              ......
          </Setter.Value>
        </Setter>
      </Style>

  7. #7
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 75
    Points : 47
    Points
    47
    Par défaut
    Merci pour cette idée mais malheureusement elle n'a pas plus de succès que la précédente....
    Je trouve quand même bizarre que xaml permette de modifier le template d'objets comme un TabItem mais pas celui d'un Canvas....

    En revanche j'ai vu qu'il était possible de modifier le template d'un menu donc je vais essayer de mettre un objet menu, sur un canvas, d'ajouter le close_button sur le menu permettant de fermer le canvas et le menu...
    A voir...

    Si tu as une meillleure idée, n'hésite pas.
    Merci

    ++

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par matb33
    Je trouve quand même bizarre que xaml permette de modifier le template d'objets comme un TabItem mais pas celui d'un Canvas....

    Le Canvas est un controle conteneur (une simple grille en fait) donc modifier son Template n'a pas de sens en soi. A l'inverse, modifier le Template d'un TabItem est déjà plus logique...

  9. #9
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 75
    Points : 47
    Points
    47
    Par défaut
    Mouais Ca fait 1 mois que je me suis mis à le découverte de XAML et je suis en général emballé mais sur ce coup-là je suis un peu déçu...

Discussions similaires

  1. bouton image pour afficher du texte
    Par froggies dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 12h09
  2. Problème de boutons radio pour récuperer les infos
    Par marsupilami34 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2005, 11h47
  3. Réponses: 3
    Dernier message: 30/06/2005, 12h50
  4. Réponses: 4
    Dernier message: 20/04/2005, 12h00
  5. Désactiver le bouton "fermer fomulaire"
    Par 973thom dans le forum IHM
    Réponses: 10
    Dernier message: 03/02/2005, 20h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo