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 :

KeyboardFocus et Style


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut KeyboardFocus et Style
    Bonjour,

    Voici mon problème :

    J'ai défini un style pour mes textbox avec un Trigger sur IsKeyboardFocused qui lance une animation sur la bordure.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
     
        <!-- Couleur du fond des textbox -->
        <SolidColorBrush x:Key="TextBoxBackground" Color="White"/>
        <!-- Couleur du border des textbox -->
        <SolidColorBrush x:Key="TextBoxBorder" Color="Black"/>
        <!-- Couleur du foreground des textbox -->
        <SolidColorBrush x:Key="TextBoxForeground" Color="Black"/>
        <!-- Couleur du fond disabled des textbox -->
        <SolidColorBrush x:Key="TextBoxDisabledBackground" Color="#FF8A8A8A"/>
     
        <Style x:Key="MyTextBoxStyle" TargetType="{x:Type TextBox}">
            <Setter Property="FontFamily" Value="/MyWpfLibrary;component/fonts/#Palatino Linotype"/>
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="Foreground" Value="{StaticResource TextBoxForeground}"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Padding" Value="1"/>
            <Setter Property="AllowDrop" Value="False"/>
            <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
            <Setter Property="TextWrapping" Value="NoWrap"/>
            <Setter Property="Height" Value="25"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TextBox}">
                        <ControlTemplate.Resources>
                            <Storyboard x:Key="Storyboard1">
                                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="border">
                                    <EasingColorKeyFrame KeyTime="0" Value="White"/>
                                    <EasingColorKeyFrame KeyTime="0:0:0.5" Value="Black"/>
                                    <EasingColorKeyFrame KeyTime="0:0:1" Value="White"/>
                                    <EasingColorKeyFrame KeyTime="0:0:1.5" Value="Black"/>
                                    <EasingColorKeyFrame KeyTime="0:0:2" Value="White"/>
                                    <EasingColorKeyFrame KeyTime="0:0:2.5" Value="Black"/>
                                </ColorAnimationUsingKeyFrames>
                            </Storyboard>
                        </ControlTemplate.Resources>
                        <Border x:Name="border" Background="{StaticResource TextBoxBackground}" BorderBrush="{StaticResource TextBoxBorder}"
                                BorderThickness="1"  CornerRadius="5">
                            <ScrollViewer x:Name="PART_ContentHost"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsKeyboardFocused" Value="True">
                                <Trigger.EnterActions>
                                    <BeginStoryboard x:Name="Storyboard1_BeginStoryboard" Storyboard="{StaticResource Storyboard1}"/>
                                </Trigger.EnterActions>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Background" Value="{StaticResource TextBoxDisabledBackground}" TargetName="border" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
     
    </ResourceDictionary>
    Le soucis est que lorsque je dispose plusieurs textbox sur une fenetre et que je dirige le focus sur l'un d'eux, tous se mettent à s'animer.

    Une idée?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    deja moi j'aurais utilisé plutot cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <EventTrigger RoutedEvent="GotFocus">
         <BeginStoryboard x:Name="Storyboard1_BeginStoryboard"
                                             Storyboard="{StaticResource Storyboard1}" />
    </EventTrigger>
    et effectivement je constate le même probleme

    as tu essayé de le faire avec blend pour voir ?

    sinon c a cause ce ca (an gras) et l'explication c que tu change en fait la couleur de la resource TextBoxBorder donc ca change partout lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <Border x:Name="border"
     Background="{StaticResource TextBoxBackground}"
      BorderBrush="{StaticResource TextBoxBorder}"
     BorderThickness="1"
     CornerRadius="5">
    met ca pour voir ca va marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <Border x:Name="border"
    Background="{StaticResource TextBoxBackground}"
    BorderBrush="Black"
    BorderThickness="1"
    CornerRadius="5">

  3. #3
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    Bonjour, effectivement le problème vient du StaticResource.

    Je l'ai transformé en DynamicResource et cela fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Border x:Name="border"
    Background="{DynamicResource TextBoxBackground}"
    BorderBrush="Black"
    BorderThickness="1"
    CornerRadius="5">
    Merci pour ton aide

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    tu as pas compris ca venait du static sur borderbrush lol pas sur l'autre ce que tu as mis avec un static ca marche

  5. #5
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    Désolé un mauvais copier / coller


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

Discussions similaires

  1. [VB6] Combiner 2 styles avec MSChart
    Par khany dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2003, 09h30
  2. Cherche Fonction du style replace...
    Par sdchamplas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/03/2003, 13h54
  3. Etude des "styles" de programmation
    Par RiRi51 dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/03/2003, 19h50
  4. feuille de style generale
    Par Manu_Just dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/03/2003, 10h06
  5. Rattacher une feuille de style a un XML existant
    Par aour dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 08/10/2002, 22h07

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