2010-04-07 15 views
7

po powiązaniu z heterogenicznym kolekcjonowaniem obiektów, nie wszystkie obiekty mają ten sam zestaw właściwości. w oknie wyjściowym otrzymujemy komunikat:Skuteczność niepowodzenia powiązania wiązania WPF z wyjątkiem

System.Windows.Data Error: 39 : BindingExpression path error: 'RoundingFactor' property not found on 'object' ''MultiLineTextMarkingScheme' (HashCode=7262386)'. BindingExpression:Path=RoundingFactor;..........

Nie wydaje się, że jest to wyjątek, ale obawiamy się, że ma on wpływ na wydajność.

Czy powinniśmy się zainteresować i stworzyć model widoku, który ma wszystkie właściwości, które chcemy powiązać (i mają właściwości, które nie istnieją w podstawowym elemencie zwracającym wartość null) lub czy możemy je po prostu zostawić.

Ta sytuacja często występuje w scenariuszu z siatką, gdzie może występować duża liczba tych błędów wiązania.

+3

Podejrzewam (ale nie mierzy się w celu sprawdzenia), że nie ma różnicy, czy nawet lepiej wykonuje * * gdy właściwość nie istnieje: WPF musi zlokalizować właściwość w obu przypadkach, a jeśli właściwość nie istnieje, to faktycznie * zapisuje * zapytanie o nią i podłączenie zdarzenia PropertyChanged! Jedyny koszt, jaki widzę, to drukowanie wiadomości. To może być kosztowne - ale mam nadzieję, że WPF nie zadałby sobie trudu wydrukowania wiadomości, gdyby nie było jej gdzie wydrukować ... Oczywiście, ponieważ nie zmierzyłem tego, moje domysły są bezwartościowe ... ! – itowlson

Odpowiedz

6

Widzisz tylko te wyniki, ponieważ pracujesz w Visual Studio. Zwykle te instrukcje trace idą donikąd, ponieważ nie ma żadnego detektora śledzenia. Tak czy inaczej, implikacje dotyczące wydajności są całkowicie znikome.

Z drugiej strony, wyjątki byłyby bardzo kosztownym sposobem zgłaszania wiążących awarii, w szczególności dlatego, że - jak można zauważyć - często występują wiązania działające na niektóre obiekty, ale nie na inne.

14

nie testowałem ten sam ale blog post from the Visual Studio team mówi, że wiązanie błędom wręcz skuteczność oddziaływania:

WPF tries several different ways to resolve path errors, including searching for attached properties and this is quite expensive.

Powiązane problemy