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

Silverlight Discussion :

création d'un bouton


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Par défaut création d'un bouton
    Bonjour à tous,

    j'ai voulais un (joli) bouton avec la gestion des 3 principaux états (normal, over et click).

    J'ai donc créé un userControl sous Blend dans lequel j'ai créé un storyboad simulant les 3 états puis en code behind, je gère ces états.

    Tout fonctionne bien. Le visuel du bouton change en fonction des différents états.
    Je voudrais maintenant avoir un visuel particulier (grisé) lorsque le IsEnabled est à False.

    Et là, je coince. Les états sont bien inactivés mais l'image que j'ai prévu pour l'état IsEnabledFalse n'est pas affiché (j'ai le visuel standard).

    Quelqu'un pourrait m'éclairer ?

    Le code ci-après ... Merci d'avance !

    Code xaml : 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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    <UserControl x:Name="userControl" x:Class="OragNet.Assets.Buttons.EditButton"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        d:DesignHeight="300" d:DesignWidth="400" Width="20" Height="20" Loaded="userControl_Loaded">
     
        <Grid x:Name="LayoutRoot" Background="Transparent">
        	<VisualStateManager.VisualStateGroups>
    			 <VisualStateGroup x:Name="CommonStates">
    			 	<VisualStateGroup.Transitions>
    					 <VisualTransition GeneratedDuration="0:0:0.2" To="OnLeave">
    					 	<Storyboard />
    					 </VisualTransition>
    				 </VisualStateGroup.Transitions>
    				 <VisualState x:Name="OnOver" >
    				 	<Storyboard x:Name="sb_OnOver">
     
    				 		<DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="image_over"/>
                            <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ellipse_over"/>
                        </Storyboard>
    				 </VisualState>
    				 <VisualState x:Name="OnClick" >
    				 	<Storyboard x:Name="sb_OnClick">
    				 		<DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="image_click"/>
    					</Storyboard>
    				 </VisualState>
    				 <VisualState x:Name="OnLeave" >
    				 	<Storyboard x:Name="sb_OnLeave">
    				 		<DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="image_over"/>
    				 		<DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="image_click"/>
                            <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ellipse_over"/>
                        </Storyboard>
    				 </VisualState>
    				 <VisualState x:Name="IsEnabledFalse" >
    				 	<Storyboard x:Name="sb_IsEnabledFalse">
                            <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="image"/>
                            <DoubleAnimation Duration="0:0:0.2" To="0.5" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="image_IsEnabledFalse"/>
                        </Storyboard>
    				 </VisualState>
     
    			 </VisualStateGroup>
    		</VisualStateManager.VisualStateGroups> 
     
        	<Image x:Name="image" HorizontalAlignment="Center" Height="18" Source="/OragNet;component/Assets/Images/edit.png" Stretch="Fill" VerticalAlignment="Center" Width="18" RenderTransformOrigin="0.5,0.5">
        		<Image.RenderTransform>
        			<CompositeTransform/>
        		</Image.RenderTransform>
        	</Image>
            <Image x:Name="image_over" HorizontalAlignment="Center" Source="/OragNet;component/Assets/Images/edit.png" Stretch="Fill" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5" Opacity="0">
        		<Image.RenderTransform>
        			<CompositeTransform/>
        		</Image.RenderTransform>
        	</Image>
            <Image x:Name="image_click" HorizontalAlignment="Center" Height="16" Source="/OragNet;component/Assets/Images/edit.png" Stretch="Fill" VerticalAlignment="Center" Width="11.9" RenderTransformOrigin="0.5,0.5" Opacity="0">
        		<Image.RenderTransform>
        			<CompositeTransform/>
        		</Image.RenderTransform>
        	</Image>
            <Image x:Name="image_IsEnabledFalse" HorizontalAlignment="Center" Source="/OragNet;component/Assets/Images/editDisabled.png" Stretch="Fill" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5" Opacity="0" Height="14" Width="14">
        		<Image.RenderTransform>
        			<CompositeTransform/>
        		</Image.RenderTransform>
        	</Image>
        	<Ellipse x:Name="ellipse_over" Margin="0" StrokeThickness="2" Opacity="0"/>
     
        </Grid>
        <ToolTipService.ToolTip>
            <ToolTip Content="Editer"></ToolTip>
        </ToolTipService.ToolTip>
    </UserControl>

    et en code behind

    Code c# : 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
    48
    49
     
    namespace OragNet.Assets.Buttons
    {
        public partial class EditButton : UserControl
        {
     
     
            public EditButton()
            {
                InitializeComponent();
     
                if (this.IsEnabled == false)
                {
                    VisualStateManager.GoToState(this, "IsEnabledFalse", true);
                }
                else
                {
                    //Lors du survol du composant par la souris
                    this.MouseEnter += (o, e) =>
                    {
                        VisualStateManager.GoToState(this, "OnOver", true);
                    };
                    //lors du click du composant avec la souris
                    this.MouseLeftButtonDown += (o, e) =>
                    {
                        VisualStateManager.GoToState(this, "OnClick", true);
                    };
                    //lorsque l'on relache le click
                    this.MouseLeftButtonUp += (o, e) =>
                    {
                        VisualStateManager.GoToState(this, "OnOver", true);
                    };
                    //lorsque l'on ne survole plus le composant
                    this.MouseLeave += (o, e) =>
                    {
                        VisualStateManager.GoToState(this, "OnLeave", true);
                    };
     
     
                }
            }
     
            private void userControl_Loaded(object sender, RoutedEventArgs e)
            {
     
            }
     
     
        }

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Et si tu spécifies une height/width ?

    Sinon l'envie de refaire un bouton c'est du pédagogique ou un vrai besoin?
    Parcequ'un template suffit non?

  3. #3
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Par défaut
    Bonjour Mickael,,
    Qu'entends-tu par heigh/width ?

    Sinon c'est un vrai besoin ... mais j'en a profité pour apprendre au travers de ce besoin (c'est donc également à titre pédagogique que je suis passé par là).

    Celà dit, je n'ai pas encore exploité les templates ... donc si tu as un lien, je suis également preneur.

Discussions similaires

  1. Création d'un bouton manuellement
    Par hitchie dans le forum MFC
    Réponses: 12
    Dernier message: 17/03/2006, 15h01
  2. [FLASH MX] Création d'un bouton standart.
    Par argon dans le forum Flash
    Réponses: 6
    Dernier message: 21/07/2005, 12h12
  3. [FLASH MX2004] Création d'un bouton Action Script
    Par chocobos dans le forum Flash
    Réponses: 12
    Dernier message: 13/04/2005, 12h03
  4. création d'un bouton de forme arrondie
    Par THIERRY L. dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/12/2003, 14h04
  5. Réponses: 3
    Dernier message: 12/12/2003, 13h12

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