2011-08-10 5 views
5

Mam sprawdzanie poprawności na komórkach i działa zgodnie z oczekiwaniami (umieszczenie czerwonego wyróżnienia wokół pola tekstowego i dodanie etykiety z błędem). Jednakże, jeśli próbuję uzyskać dostęp do Validation.GetHasError (TheGrid), gdzie TheGrid jest moją grą DataGrid, zawsze ma ona wartość false. Czy ktoś wie, jak sprawdzić, czy DOWOLNE komórki w DataGrid mają błędy?Sprawdzanie, czy jakakolwiek komórka DataGrid WPF ma błąd

Chcę to zrobić, więc mogę wyłączyć zapisywanie, jeśli występują błędy.

+0

myślę, że moja odpowiedź na [to pytanie] [1] rozwiązuje go w przyjaznej więcej XAML sposób . [1]: http://stackoverflow.com/questions/7121892/wpf-detect-row-validation-errors-in-c-sharp-code – user2112362

Odpowiedz

5

Możecie napotkasz problemy z wirtualizacją z tego, ale pewnie trzeba szukać w pojemnikach:

var errors = (from c in 
        (from object i in _myGrid.ItemsSource 
        select _myGrid.ItemContainerGenerator.ContainerFromItem(i)) 
       where c != null 
       select Validation.GetHasError(c)) 
      .FirstOrDefault(x => x); 
if (errors) 
{ 
    //There be errors 
} 
+1

Dzięki, że w zasadzie to, co skończyło się robi, ale zamiast przeglądać kontrolki, sprawdziłem właściwość Błędy na moich danych, do których był związany xaml. – KrisTrip

+0

@KrisTrip: Jeśli możesz powiązać go z danymi, które oczywiście są zawsze preferowane, normalnie nie powinno się nigdy mieszać z wygenerowanymi kontenerami. –