Имам страница с две контроли върху нея, мрежа за данни и форма за данни.
В мрежата с данни имам списък с всички обекти от определен клас. Когато потребителят избере елемент в мрежата с данни, формулярът за данни се зарежда с избрания обект.
dataForm.CurrentItem = изглед.CurrentItem; изгледът е PagedCollectionView, който съдържа само избрания елемент.
Проблемът ми е, че когато задавам свойството currenitem на dataform, ако използвам само PagedCollectionView (изглед) без .CurrentItem, губя валидирането на dataform. Всички задължителни полета не се виждат като задължителни. Ако използвам pcv.CurrentItem като валидиране CurrentItem на моя формуляр за данни работи добре, но тогава възниква друг проблем.
Когато използвам текущия елемент на PagedCollectionView като текущия елемент на формуляра за данни:
Потребителят избира елемент в мрежата с данни и обектът се зарежда добре във формуляра за данни. Ако потребител промени определена стойност в някое от текстовите полета на формуляра за данни и след това избере различен елемент, с който да зареди формуляра за данни, се извежда следната грешка:
„Не може да се промени валутата, когато даден елемент има грешки при валидиране или се редактира и AutoCommit е невярно. Задайте ItemsSource на ICollectionView, за да управлявате валутата вместо това.“ Не използвам свойствата за страниране на формуляра за данни и имам собствен бутон за запазване във формуляра.
Ще се радвам на всякаква помощ, това е първият ми проект в Silverlight, върху който работя.
Редактиране - Използвах dataform.CommitEdit, когато променях текущия елемент на dataform. Едно нещо, което това не реши, е, че ако има грешка при валидиране на формуляра, грешката във валутата се хвърля. Има ли все пак това да се заобиколи. AutoEdit е true и AutoCommit е false за формуляра за данни