Tôi đã chấp nhận những gì dường như là cách chuẩn của hộp văn bản xác thực trong WPF bằng cách sử dụng giao diện IDataErrorInfo và kiểu như được hiển thị bên dưới. Tuy nhiên, làm cách nào tôi có thể vô hiệu hóa nút Lưu khi trang không hợp lệ? Điều này có được thực hiện bằng cách nào đó thông qua trình kích hoạt không?Vô hiệu hóa nút Lưu trong WPF nếu xác thực không thành công
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>
Các công trình lớn cảm ơn nhiều. Một điều khác mặc dù. Tôi có thể kiểm tra các điều khiển riêng lẻ bằng mã sau Nếu Validation.GetHasError (myTextbox) Sau đó e.CanExecute = False Có cách nào để kiểm tra tính hợp lệ của tất cả các điều khiển thay vì riêng lẻ không? – Mitch
Tôi đã chỉnh sửa để bao gồm một số ý tưởng về việc này. –
+1 để sử dụng lệnh được đề xuất. Lệnh là những gì làm cho WPF bắt đầu thực sự bấm cho tôi. –