저는 MVVM을 처음 접했고 방금 MVVM 패턴을 따르는 첫 번째 프로젝트를 시작했습니다. IDataErrorInfo 인터페이스를 사용하여 ObservableCollection의 유효성 검사를 시도 할 때 문제가 있습니다. ,MVVM 패턴을 사용하여 ViewModel의 바인딩 된 ObservableCollection 유효성 검사
<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}" />
그것은 당신이 항목을 선택하면, 선택한 객체의 속성이 텍스트 상자에 표시되는 객체를 포함한 단순한 목록 상자의 :
ObservableCollection<Magazine> magazineRepository;
public ObservableCollection<Magazine> MagazineRepository
{
get { return magazineRepository; }
set
{
if (value != null)
{
bladRepository = value;
OnPropertyChanged("MagazineRepository");
}
}
}
그리고 이런 내 XAML : 내 ObservableCollection에는 다음과 같습니다 그런 다음 목록 상자 객체에 바인딩됩니다.
내 코드는 내 코드를 이렇게 설정할 때 내 데이터의 유효성을 검사하는 방법을 도메인 모델에 알려주는 유일한 방법은 실제로 좋은 연습이 아니므로 거기에 도착하기 전에 ViewModel에서 확인하십시오. 기본적으로 ViewModel의 MagazineRepository에서 각 속성의 유효성을 검사하고 싶습니다. 어떻게하면됩니까?
추신 : 내 질문에 정보가 부족한 경우이 게시판 (및 프로그래밍 게시판)에 게시하는 것이 처음입니다. 알려 주시면 필요한 세부 정보를 제공해 드리겠습니다.
고마워요.
게시 한 코드에 ViewModel이 표시되지 않지만 일반적인 방식으로 ViewModel이 IDataErrorInfo를 구현할 수 있습니다. – Alan
죄송합니다. 내 생각에 묵시적이라고 생각했습니다.컬렉션은 실제로 IDataErrorInfo를 구현하는 내 ViewModel에 있지만 텍스트 상자가 컬렉션의 속성을 변경할 때 해당 속성에 대한 유효성을 검사해야하며 정확히 수행 할 방법을 알 수 없습니다. 따라서 각각 2 개의 텍스트 상자가 컬렉션의 속성에 바인딩되어 있으며 해당 속성이 변경되면 IDataErrorInfo를 사용하여 배웠던 방식대로 전체 속성의 유효성을 검사 할 수있는 유효성 검사를 수행해야합니다. –