J'ai adopté ce qui semble être la méthode standard de validation des zones de texte dans WPF en utilisant l'interface IDataErrorInfo et les styles comme indiqué ci-dessous. Cependant, comment puis-je désactiver le bouton Enregistrer lorsque la page devient invalide? Est-ce que cela est fait en quelque sorte par des déclencheurs?Désactiver le bouton Enregistrer dans WPF si la validation échoue
Default Public ReadOnly Property Item(ByVal propertyName As String) As String Implements IDataErrorInfo.Item
Get
Dim valid As Boolean = True
If propertyName = "IncidentCategory" Then
valid = True
If Len(IncidentCategory) = 0 Then
valid = False
End If
If Not valid Then
Return "Incident category is required"
End If
End If
Return Nothing
End Get
End Property
<Style TargetType="{x:Type TextBox}">
<Setter Property="Margin" Value="3" />
<Setter Property="Height" Value="23" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder Name="MyAdorner" />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<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>
fonctionne très grand merci. Une autre chose cependant. Je peux vérifier les contrôles individuels avec le code suivant Si Validation.GetHasError (myTextbox) Puis e.CanExecute = False Existe-t-il un moyen de vérifier la validité de tous les contrôles plutôt que individuellement? – Mitch
J'ai édité pour inclure quelques idées à ce sujet. –
+1 pour l'utilisation de commande suggérée. Les commandes sont ce qui fait que WPF commence vraiment à cliquer pour moi. –