Ich habe die Standardmethode zur Überprüfung von Textfeldern in WPF mithilfe der IDataErrorInfo-Schnittstelle und der Stile übernommen, wie unten dargestellt. Wie kann ich jedoch die Schaltfläche "Speichern" deaktivieren, wenn die Seite ungültig wird? Wird das irgendwie durch Trigger gemacht?Deaktivieren Sie die Schaltfläche "Speichern" in WPF, wenn die Überprüfung fehlschlägt
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>
Funktioniert prima vielen Dank. Eine andere Sache jedoch. Ich kann einzelne Steuerelemente mit dem folgenden Code überprüfen Wenn Validation.GetHasError (myTextbox) Dann e.CanExecute = False Gibt es eine Möglichkeit, die Gültigkeit aller Steuerelemente statt einzeln zu überprüfen? – Mitch
Ich bearbeitet, um einige Ideen dazu zu enthalten. –
+1 für die vorgeschlagene Befehlsverwendung. Befehle haben WPF veranlasst, wirklich für mich zu klicken. –