Tôi mới tham gia MVVM, vừa mới bắt đầu dự án đầu tiên của tôi theo mẫu MVVM. Tôi có một vấn đề cố gắng để xác nhận một ObservableCollection bằng cách sử dụng giao diện IDataErrorInfo. ObservableCollection của tôi trông như thế này:Xác nhận tính hợp lệ của ObservableCollection trong ViewModel bằng cách sử dụng mẫu MVVM
ObservableCollection<Magazine> magazineRepository;
public ObservableCollection<Magazine> MagazineRepository
{
get { return magazineRepository; }
set
{
if (value != null)
{
bladRepository = value;
OnPropertyChanged("MagazineRepository");
}
}
}
Và XAML của tôi như thế này:
<ListBox x:Name="listMagazineRepository"
Grid.ColumnSpan="2"
ItemsSource="{Binding}"
DataContext="{Binding MagazineRepository}"
DisplayMemberPath="Navn"
SelectedItem="{Binding Path=SelectedItem}"/>
<TextBox x:Name="txtName" Grid.Row="1" Grid.Column="0"
Text="{Binding ElementName=listMagazineRepository, Path=SelectedItem.Navn, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
<TextBox x:Name="txtPrice" Grid.Row="2" Grid.Column="0"
Text="{Binding ElementName=listMagazineRepository, Path=SelectedItem.Pris, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
Nó chỉ là một ListBox đơn giản có chứa các đối tượng, khi bạn chọn một mục, các thuộc tính đối tượng được chọn sẽ được hiển thị trong textbox, và sau đó được liên kết với đối tượng hộp danh sách.
Vấn đề của tôi là khi tôi thiết lập mã của mình như thế này, cách duy nhất tôi có thể tìm hiểu cách xác thực dữ liệu của mình là trong Mô hình miền, thực sự không phải là một phương pháp hay, tôi muốn xác nhận trong ViewModel trước khi nó đến đó. Về cơ bản tôi muốn xác nhận tính hợp lệ của từng thuộc tính trong MagazineRepository, trong ViewModel, bạn sẽ làm thế nào?
PS: Tôi mới đăng trên bảng này (và các bảng lập trình nói chung) nếu câu hỏi của tôi thiếu thông tin, vui lòng cho tôi biết và tôi sẽ cung cấp các chi tiết cần thiết.
Cảm ơn rất nhiều.
Tôi không thấy một ViewModel trong mã của bạn mà bạn đã đăng, nhưng cách điển hình là để ViewModel của bạn triển khai IDataErrorInfo – Alan
Xin lỗi, tôi nghĩ nó đã được ngụ ý.Bộ sưu tập nằm trong ViewModel của tôi, thực sự thực hiện IDataErrorInfo, nhưng khi hộp văn bản thay đổi thuộc tính trong bộ sưu tập, tôi cần phải xác thực thuộc tính đó và tôi không thể tìm ra chính xác cách thực hiện điều đó. Vì vậy, có 2 hộp văn bản từng bị ràng buộc vào một thuộc tính trong bộ sưu tập, và khi thay đổi thuộc tính đó tôi cần phải xác thực trên nó, làm theo cách tôi đã học với IDataErrorInfo tôi chỉ có thể xác nhận toàn bộ bộ sưu tập. –