Tôi có một WPF UserControl với nhiều điều khiển khác bên trong nó. Hộp văn bản nằm trong số này. Mỗi TextBox có xác nhận của riêng mình:Xác thực WPF: Xóa tất cả các lỗi xác thực
<TextBox>
<TextBox.Text>
<Binding Path="MyPath" StringFormat="{}{0:N}" NotifyOnValidationError="True">
<Binding.ValidationRules>
<r:MyValidationRule ValidationType="decimal" />
</Binding.ValidationRules>
</Binding>
<TextBox.Text>
<TextBox>
một
Bây giờ giả sử các loại sử dụng một số ký tự không hợp lệ vào chúng. Tất cả chúng sẽ trở nên nổi bật màu đỏ.
Bây giờ tôi muốn đặt lại tất cả các lỗi xác nhận (từ đầu vào không chính xác) và thiết lập các giá trị đúng gần đây đến từ DataContext
.
Tôi đặt DataContext trong constructor và tôi không muốn thay đổi nó (DataContext = null sẽ không giúp tôi rồi):
DataContext = _myDataContext = new MyDataContext(..);
Những gì tôi đã tìm thấy là các lớp:
Validation.ClearInvalid(..)
BindingExpression.UpdateTarget();
Tôi nghĩ rằng các lớp này có thể giúp tôi, nhưng chúng yêu cầu Binding
của bê tông FrameworkElement
và tôi muốn làm điều đó trên toàn cầu cho tất cả chúng.
Tôi có nên lặp lại thông qua Visual Tree (đây thực sự là điều tôi không thích) hoặc có giải pháp nào tốt hơn cho điều này không?
Khi bạn ràng buộc các giá trị chính xác, sau đó tự động, nó sẽ đặt lại các lỗi xác thực.Bạn đang sử dụng giao diện INotifyPropertyChanged cho viewmodel & Property của bạn sẽ tăng sự kiện đã thay đổi thuộc tính? – Ragunathan
Có, tôi đang sử dụng nó .. đó là những gì tôi đã thử lúc đầu. Nhưng không có thay đổi trong DataSource. Vì vậy, WPF sẽ không phản ánh giá trị cũ –