Đây là một chút của một whodunnit WPF! ngôi đền xác nhận của tôi nó không xuất hiện khi dự kiến
Validation ErrorTemplate không hiển thị trên các lỗi dữ liệu
Vấn đề
Về cơ bản, tôi đang sử dụng IDataErrorInfo trên mô hình quan điểm của tôi để cung cấp thông tin phản hồi về lỗi nhập dữ liệu. Tôi có thể thấy điều này được gọi và làm việc như mong đợi, nhưng mẫu lỗi xác nhận cho điều khiển bị ràng buộc không bao giờ được hiển thị bởi WPF!
Tôi đã thử cả bằng cách sử dụng mẫu lỗi biên giới viền hộp văn bản mặc định được xây dựng sẵn, mẫu lỗi kiểu và mẫu được mã hóa cứng. Không có điều nào trong số này được hiển thị trong tình huống lỗi dữ liệu.
Heres đang ràng buộc XAML của tôi:
<TextBox x:Name="txtCaseNumber"
Text="{Binding Path=CaseNumber, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"/>
Wierdly, lỗi được vào bộ sưu tập Validation.Errors. Các mã sau kết quả trong thông báo lỗi IDataErrorInfo của tôi nhận được hiển thị bên cạnh kiểm soát bị ràng buộc. Điều này dẫn tôi đến suy nghĩ vấn đề là ở phía bên xaml, thay vì bên viewmodel.
<ContentPresenter
Content="{Binding ElementName=txtCaseNumber, Path=(Validation.Errors).CurrentItem}" />
Ngoài ra, System.Windows.Controls.Validation.GetHasError(txtCaseNumber)
trả về giá trị đúng.
Tôi đang lưu trữ WPF trong biểu mẫu thắng nếu điều đó tạo nên sự khác biệt. Tôi không thể tìm thấy bất kỳ tài liệu tham khảo trong mã hoặc phong cách của tôi để xác nhận hoặc ErrorTemplate vì vậy tôi khá chắc chắn đây không phải là một mục tiêu riêng của phong cách.
Tôi tip mũ của tôi cho bạn, Sir! Tôi đã có một UserControl> Expander> Textbox trong một phần mở rộng VS. Nhưng nó sẽ không hiển thị các lỗi IDataErrorInfo. Đã tạo một ứng dụng mẫu WPF để lưu trữ vấn đề UC - vẫn tồn tại (VS Extn đã loại trừ). Thực hiện một máy ảo khác - đã làm việc loại bỏ VM. Sau đó, tôi nhấn bài đăng của bạn - thêm một vài trình xử lý sự kiện được tải vào cửa sổ và UC. Chắc chắn rồi, UC đã trả về một AdornerLayer trống. Bao bọc nội dung mở rộng với AdornerDecorator và nó đã hoạt động! Làm chậm tôi xuống 2 ngày .. sống n học tôi đoán. Một lần nữa, cảm ơn sự kiên trì và thời gian để ghi lại nó cho hậu thế !! – Gishu
không có probs! tôi mất 2 ngày trên nó là tốt: ( –
Điều này chỉ cố định vấn đề của tôi với một cửa sổ theo phong cách Metro mà không cung cấp một AdornerDecorator. – mortware