Bonjour,

Expérimenté en Framework 2, je m'initie (enfin) depuis quelques semaines à WPF et à MVVM avec plaisir. Pour un projet, je cherche à créer un contrôle simple permettant d'afficher un message pour quelques secondes avant de disparaître. J'ai donc créé ceci :
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
 
<TextBlock x:Class="ProjetTest.View.XFadeTextBlock" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:sys="clr-namespace:System;assembly=mscorlib">
 
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Opacity" Value="0" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding MessageInfo}" Value="{x:Null}">
                    <DataTrigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard FillBehavior="Stop">
                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
                                    <LinearDoubleKeyFrame KeyTime="0:0:0" Value="1" />
                                    <LinearDoubleKeyFrame KeyTime="0:0:2" Value="1" />
                                    <LinearDoubleKeyFrame KeyTime="0:0:3" Value="0" />
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.ExitActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>
Le contrôle a pour DataContext un ModelView contenant une propriété MessageInfo par défaut à null. Lorsque j'affecte une valeur à MessageInfo le contrôle apparait en affichant le texte, puis disparait progressivement comme prévu. J'aimerais simplement que la valeur de la propriété MessageInfo se réinitialise après affichage. Mais je ne vois pas comment obtenir ceci, sachant que pour respecter le modèle MVVM je crois comprendre qu'il vaudrait mieux que ça soit fait dans le code XAML du contrôle.

Merci d'avance de vos conseils.