私は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}" />
それはあなたの項目を選択すると、選択したオブジェクトのプロパティは、テキストボックスに表示されているオブジェクトを含む単純なはlistBoxです:
ObservableCollection<Magazine> magazineRepository;
public ObservableCollection<Magazine> MagazineRepository
{
get { return magazineRepository; }
set
{
if (value != null)
{
bladRepository = value;
OnPropertyChanged("MagazineRepository");
}
}
}
そして、このように私のXAMLは:私のObservableCollectionは、このようになりますリストボックスオブジェクトにバインドされます。
私のコードをこのように設定すると、私のデータを検証する方法を私が知る唯一の方法はドメインモデルであり、本当に良い習慣ではありません。 ViewModelで取得される前に検証します。基本的に、私はMagazineRepositoryの各プロパティを検証したいと思っています.ViewModelでは、これをどうやってやっていきますか?
PS:私の質問に情報が不足している場合は、このボード(およびプログラミングボード全般)に投稿するのが初めてです。私に知らせてください。
ありがとうございます。
投稿したコードにViewModelが表示されませんが、ViewModelがIDataErrorInfoを実装する典型的な方法は – Alan
です。申し訳ありませんが、暗黙のうちに考えられました。コレクションは私のViewModelにあります。実際にはIDataErrorInfoが実装されていますが、テキストボックスがコレクション内のプロパティを変更するときに、そのプロパティを検証する必要があり、それを正確に行う方法がわかりません。したがって、2つのテキストボックスがそれぞれコレクションのプロパティにバインドされています。そのプロパティが変更されると、IDataErrorInfoで学んだやり方で、そのコレクションの検証を行う必要があります。 –