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 :

[SL4] Visual State dans un template appliqué uniquement au premier élément?


Sujet :

Silverlight

  1. #1
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut [SL4] Visual State dans un template appliqué uniquement au premier élément?
    Bonjour,
    Je développe une petite appli sur Silverlight 4.
    Dans ma vue, il y'a une listbox et j'aimerais changer le fond en fonction de la valeur d'un des champs de mon item.
    J'ai donc mis mon template dans un dictionnaire de ressources.
    Le template se compose d'une bordure que j'ai nommé theBorder.
    Sur cette bordure j'ai mis des DataTrigger avec des GoToStateAction.
    Cette bordure contient également des visualtstates contenant chacun une coloranimation.
    Enfin la bordure contient un textblock bindé sur ma propriété.

    A l'execution, lorsque je change la valeur de ma propriété sur le premier élément de ma liste, on a bien un changement du textblock et de couleur mais les autres éléments il n'ya qu'un changement du textblock.
    Je présume que c'est parceque les animations on pour target theBorder et que cet élément ne peut être qu'unique.
    Comment puis-je m'en sortir?

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    C'est pas très clair tout ça.

    Ton template est appliqué à ta ListBox ou aux items ?
    Tu veux changer le background de l'item ou de la ListBox ?

    Tu peux montrer ton code ?
    Tu as fait ton stuff avec Blend ou à la main ?

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Blend ou à la main, peu m'importe!
    J'ai pas mis le code car j'ai du mal à le formater dans l'éditeur la (l'indentation n'est pas top)

    Mais effectivement c'est beaucoup plus simple à comprendre!

    Xaml de ma listbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <ListBox x:Name="RaDays" Width="535" ItemsSource="{Binding RaDays, Mode=OneWay}" ItemTemplate="{StaticResource DayTemplate}" SelectionMode="Extended" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Margin="5">
    	<ListBox.ItemsPanel>
    		<ItemsPanelTemplate>
    			<Controls:WrapPanel Orientation="Horizontal" Width="{Binding Width, ElementName=RaDays}"/>
    		</ItemsPanelTemplate>
    	</ListBox.ItemsPanel>
    </ListBox>
    Xaml de mon template:
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <DataTemplate x:Key="DayTemplate">
    	<Border x:Name="theBorder" CornerRadius="5" d:DataContext="{d:DesignInstance Entities:RaDayViewModel, IsDesignTimeCreatable=True}" Width="80" Height="80">
    		<Interactivity:Interaction.Triggers>
    			<Interactivity:EventTrigger EventName="MouseRightButtonDown">
    				<Command:EventToCommand Command="{Binding RightButtonCommand}" PassEventArgsToCommand="True"/>
    			</Interactivity:EventTrigger>
    			<ei:DataTrigger Binding="{Binding Classification}" Value="Unknown">
    				<ei:GoToStateAction StateName="Unknown"/>
    			</ei:DataTrigger>
    			<ei:DataTrigger Binding="{Binding Classification}" Value="Weekend">
    				<ei:GoToStateAction StateName="Weekend"/>
    			</ei:DataTrigger>
    			<ei:DataTrigger Binding="{Binding Classification}" Value="Work">
    				<ei:GoToStateAction StateName="Work"/>
    			</ei:DataTrigger>
    			<ei:DataTrigger Binding="{Binding Classification}" Value="CP">
    				<ei:GoToStateAction StateName="Cp"/>
    			</ei:DataTrigger>
    			<ei:DataTrigger Binding="{Binding Classification}" Value="CS">
    				<ei:GoToStateAction StateName="Cs"/>
    			</ei:DataTrigger>
    			<ei:DataTrigger Binding="{Binding Classification}" Value="RTT">
    				<ei:GoToStateAction StateName="Rtt"/>
    			</ei:DataTrigger>
    		</Interactivity:Interaction.Triggers>
    		<Border.Effect>
    			<DropShadowEffect/>
    		</Border.Effect>
    		<VisualStateManager.CustomVisualStateManager>
    			<ei:ExtendedVisualStateManager/>
    		</VisualStateManager.CustomVisualStateManager>
    		<VisualStateManager.VisualStateGroups>
    			<VisualStateGroup x:Name="Classification">
    				<VisualStateGroup.Transitions>
    					<VisualTransition GeneratedDuration="0:0:1.0">
    						<VisualTransition.GeneratedEasingFunction>
    							<CubicEase EasingMode="EaseInOut"/>
    						</VisualTransition.GeneratedEasingFunction>
    					</VisualTransition>
    				</VisualStateGroup.Transitions>
    				<VisualState x:Name="Unknown">
    					<Storyboard>
    						<ColorAnimation Storyboard.TargetName="theBorder" Duration="0" To="{StaticResource UnknownColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" d:IsOptimized="True"/>
    					</Storyboard>
    				</VisualState>
    				<VisualState x:Name="Weekend">
    					<Storyboard>
    						<ColorAnimation Storyboard.TargetName="theBorder" Duration="0" To="{StaticResource WeekendColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" d:IsOptimized="True"/>
    					</Storyboard>
    				</VisualState>
    				<VisualState x:Name="Work">
    					<Storyboard>
    						<ColorAnimation Storyboard.TargetName="theBorder" Duration="0" To="{StaticResource WorkColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" d:IsOptimized="True"/>
    					</Storyboard>
    				</VisualState>
    				<VisualState x:Name="Cp">
    					<Storyboard>
    						<ColorAnimation Storyboard.TargetName="theBorder" Duration="0" To="{StaticResource CpColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" d:IsOptimized="True"/>
    					</Storyboard>
    				</VisualState>
    				<VisualState x:Name="Cs">
    					<Storyboard>
    						<ColorAnimation Storyboard.TargetName="theBorder" Duration="0" To="{StaticResource CsColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" d:IsOptimized="True"/>
    					</Storyboard>
    				</VisualState>
    				<VisualState x:Name="Rtt">
    					<Storyboard>
    						<ColorAnimation Storyboard.TargetName="theBorder" Duration="0" To="{StaticResource RttColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" d:IsOptimized="True"/>
    					</Storyboard>
    				</VisualState>
    			</VisualStateGroup>
    		</VisualStateManager.VisualStateGroups>
    		<Border.Background>
    			<SolidColorBrush Color="White"/>
    		</Border.Background>
    		<Grid Margin="2,0">
    			<Grid.ColumnDefinitions>
    				<ColumnDefinition Width="*"/>
    				<ColumnDefinition Width="15"/>
    			</Grid.ColumnDefinitions>
    			<Grid.RowDefinitions>
    				<RowDefinition Height="44"/>
    				<RowDefinition Height="18"/>
    				<RowDefinition Height="18"/>
    			</Grid.RowDefinitions>
    			<TextBlock Text="{Binding Day, Mode=OneWay, StringFormat=\{0:dd\}}" FontSize="36" FontWeight="Bold" Foreground="Red" />
    			<TextBlock Grid.Column="1" Width="8" Text="{Binding Type}" Foreground="Black" FontWeight="Bold" />
    			<TextBlock Grid.Row="1" Grid.ColumnSpan="2" Text="{Binding DayOfWeek, Mode=OneWay}" Foreground="Black" FontWeight="Bold" />
    			<TextBlock Grid.Row="2" Grid.ColumnSpan="2" Text="{Binding Classification}" Foreground="Black" />
    		</Grid>
    	</Border>
    </DataTemplate>
    Edit:
    Démo de l'appli sur http://ausy.ou-bien.net
    Pour comprendre le problème, il suffit de drag'n'dropper le jour 1 sur la catégorie "congé payé", il se colore en bleu. Le drag'n'drop du jour 2 ne produit rien

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Je remonte ce topic pour indiquer que ca a été corrigé dans les versions finales de SL4 et du Control Toolkit

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

Discussions similaires

  1. [XSL] Passage de variable dans un template
    Par Otarie dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/11/2005, 23h50
  2. cast dans un template
    Par olivic dans le forum Langage
    Réponses: 15
    Dernier message: 20/10/2004, 14h10
  3. dll visual basic dans VC++
    Par Nicky dans le forum MFC
    Réponses: 6
    Dernier message: 21/09/2004, 10h57
  4. Visual Studio .Net et template
    Par Sphax dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 17/07/2004, 16h33
  5. Liaison d'une dll Visual C++ dans un programme c++Builder
    Par Cyrilh7 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/11/2003, 13h49

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