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

Windows Presentation Foundation Discussion :

Spécifier la méthode qui sera appelée sur le click d'un UserControl


Sujet :

Windows Presentation Foundation

  1. #1
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut Spécifier la méthode qui sera appelée sur le click d'un UserControl
    Bonjour,

    Je souhaiterai savoir s'il existe un moyen pour pouvoir définir une DependencyProperty ou autre afin que l'on puisse modifier la méthode appelée lors d'un clic sur un UserControl, comme c'est faisable pour les boutons et autres éléments de base.

    Ceci dans l'optique de pouvoir créer un UserControl correspondant à un bouton amélioré. Je poste le code de mon contrôle :
    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
    46
    47
     
    <UserControl x:Class="Maquette1553.Utils.LabeledButton"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 Name="labeledButton">
     
        <UserControl.Resources>
            <DropShadowBitmapEffect x:Key="shadowEffect"
                                    ShadowDepth="{Binding ElementName=labeledButton, Path=ShadowDepth}"
                                    Direction="{Binding ElementName=labeledButton, Path=ShadowDirection}"
                                    Color="{Binding ElementName=labeledButton, Path=ShadowColor}"
                                    Opacity="{Binding ElementName=labeledButton, Path=ShadowOpacity}"
                                    Softness="{Binding ElementName=labeledButton, Path=ShadowSoftness}" />
        </UserControl.Resources>
     
     
        <Button x:Name="btn"
                Width="95"
                Click="btnClick">
     
            <Border BorderThickness="0">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <Image x:Name="imgBtn"
                           Source="{Binding ElementName=labeledButton, Path=Source}"
                           Width="{Binding ElementName=labeledButton, Path=Width}" />
     
                    <StackPanel VerticalAlignment="Center"
                                HorizontalAlignment="Stretch"
                                Margin="5">
                        <TextBlock x:Name="text"
                                   Text="{Binding ElementName=labeledButton, Path=Text}"
                                   FontWeight="Bold"
                                   Foreground="{Binding ElementName=labeledButton, Path=TextColor}"
                                   BitmapEffect="{StaticResource shadowEffect}"
                                   FontSize="{Binding ElementName=labeledButton, Path=FontSize}"
                                   HorizontalAlignment="Center" />
                    </StackPanel>
                </Grid>
            </Border>
        </Button>
    </UserControl>
    L'objectif est de remplacer la ligne
    par quelque chose du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Click="{StaticResource Click}"
    avec la méthode dont le nom est stocké dans la propriété Click qui sera définie dans la fenêtre contenant mon UserControl.

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Salut

    Au risque de dire une betise plus grosse que moi, en utilisant un delegate peut etre ?

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 214
    Points : 341
    Points
    341
    Par défaut
    Est-ce que tu es sûr d'avoir besoin d'un UserControl pour faire ça ?

    Si tu veux améliorer ton bouton, une possibilité est de définir un nouveau template que tu pourras lui appliquer. De cette manière, tu peux complètement changer le look de ton bouton sans créer un UserControl.
    www.japf.fr mon blog sur WPF et .Net

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    En fait, j'ai trouvé la solution ici. Il faut utiliser des RoutedEvent et RoutedEventHandler.

    Et oui, j'ai besoin d'un nouveau UserControl, car je veux pouvoir modifier certains attributs tels que la couleur du texte ou sa taille, du coup j'ai besoin de rajouter de nouvelles propriétés (enfin, c'est comme ça que je sais le faire, mais y'a peut-être une autre solution...)

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Je n'arrive pas à poster mon code à cause de quelques problèmes techniques, donc je vous le mets en pièce-jointe pour ceux que ça intéresseraient...

    Wala !
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/03/2015, 19h02
  2. Problème de requete sur un champ qui s'appele "table"
    Par yann123456 dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/03/2009, 11h26
  3. [Runtime class loading] Appeler une méthode qui n'existe pas
    Par Invité dans le forum Général Java
    Réponses: 14
    Dernier message: 27/06/2008, 08h48
  4. Appel à une fonction qui se trouve sur une autre page
    Par pierrot10 dans le forum Langage
    Réponses: 4
    Dernier message: 21/06/2007, 12h36
  5. Réponses: 2
    Dernier message: 28/02/2007, 19h54

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