2010-04-07 6 views
7

우리가 이질적인 개체 컬렉션에 바인딩 할 때 모든 개체가 동일한 속성 집합을 가질 필요는 없습니다. 출력 창에 다음과 같은 메시지가 나타납니다.WPF 바인딩 실패 성능 대 히트 대 예외

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

이 메시지는 예외는 아니지만 성능에 영향을줍니다.

우리가 바인딩하려는 모든 속성을 갖고 (기본 요소에 존재하지 않는 속성을 null로 반환하는) 뷰 모델을 작성하거나 작성해야합니다. 아니면 그냥 그대로 둘 수 있습니다.

이러한 상황은 종종 이러한 바인딩 실패가 많을 수있는 표 시나리오에서 발생합니다.

+3

을 속성이 존재하지 않는 경우 : WPF는 두 경우 모두 속성을 찾아야하며 속성이 존재하지 않으면 실제로 쿼리를 저장하고 PropertyChanged 이벤트를 연결합니다. 내가 볼 수있는 유일한 비용은 메시지를 인쇄하는 것입니다. 그게 값이 비쌀 수 있습니다 -하지만 WPF가 아무데도 그것을 인쇄 할 수 없다면 메시지를 인쇄하려고 노력하지 않았 으면 좋겠어 ... 물론, 내가 그것을 측정하지 않았기 때문에, 내 추측은 쓸모가 없다 ... ! – itowlson

답변

6

Visual Studio에서 실행 중이므로 출력물 만 보입니다. 일반적으로 이러한 추적 문은 추적 수신기가 없기 때문에 아무 곳에도 표시되지 않습니다. 어느 쪽이든, 성능에 미치는 영향은 완전히 무시할 수 있습니다.

반면 예외는 바인딩 실패를보고하는 데 매우 비용이 많이 드는 방법입니다. 특히 노트에 따르면 일부 개체에서는 작동하지만 다른 개체에서는 작동하지 않는 바인딩이 자주 발생하기 때문입니다.

14

나는이에게 자신을 시험하지 않았다 그러나 blog post from the Visual Studio team 말한다 그 오류를 실제로 성능에 영향을 바인딩 : 나는 생각한다 (그러나 확인하기 위해 측정하지 않은)이 * 차이가 없습니다, 심지어 * 더 나은 수행하는

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