Bonjour,
J'ai un textbox dans lequel je vérifie que l'utilisateur entre bien une date dans le futur:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <TextBox Name="StartDateDTKey" Grid.Row="2" Grid.Column="1" Validation.ErrorTemplate="{StaticResource validationTemplate}" Style="{StaticResource textStyleTextBox}" Margin="8,5,0,5"> <TextBox.Text> <Binding Path="StartDate" UpdateSourceTrigger="PropertyChanged" Converter="{StaticResource dateConverter}" > <Binding.ValidationRules> <src:FutureDateRule /> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox>
Si la date n'est pas correcte alors, un ! se met à gauche du text box et le tooltip indique le message d'erreur
Ds les ressources, j'ai pour le "!"
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <ControlTemplate x:Key="validationTemplate"> <DockPanel> <TextBlock Foreground="Red" FontSize="20" Text="!"></TextBlock> <AdornedElementPlaceholder/> </DockPanel> </ControlTemplate>
et pour le tooltip
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <Style x:Key="textStyleTextBox" TargetType="TextBox"> <Setter Property="Foreground" Value="#333333" /> <Setter Property="MaxLength" Value="40" /> <Setter Property="Width" Value="392" /> <Style.Triggers> <Trigger Property="Validation.HasError" Value="true"> <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/> </Trigger> </Style.Triggers> </Style>
Ca marche nickel mais je voudrais :
Au lieu de mettre un !, mettre le message du tooltip (l'erreur). Si possible en dessous du textbox.
Ou alors je crée un label en dessous du textbox et je le rempli avec le message du tooltip
Mais ca ne fonctionne pas :
Si je met
a la place du !, le message ne vient pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"
J'ai créé un label "msgerr" et dans le trigger, j'ajoute un setter
Mais dans ce setter, je ne peux pas utiliser le target name pour accéder à mon label.
Comment faire ?
Merci d'avance
Gridin
Partager