2010-04-07 8 views
7

cuando nos unimos a la colección heterogénea de objetos, no todos los objetos tienen el mismo conjunto de propiedades. en la ventana de salida se obtiene un mensaje como:WPF Rendimiento de falla de enlace éxito vs Excepción

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

Esto no parece ser una excepción, pero nos preocupa que tiene un impacto en el rendimiento.

Deberíamos preocuparnos y crear un modelo de vista que tenga todas las propiedades a las que nos queremos vincular (y que las propiedades que no existen en el elemento subyacente devuelvan nulo) o podemos simplemente dejarlo.

Esta situación a menudo se produce en un escenario de cuadrícula donde puede haber un gran número de estas fallas de enlace.

+3

Sospecho (pero no he medido para comprobar) que no hace ninguna diferencia, o incluso realiza * mejor * cuando la propiedad no existe: WPF tiene que ubicar la propiedad en cualquier caso, y si la propiedad no existe, entonces * salva * la consulta y conecta el evento PropertyChanged. El único costo que puedo ver es imprimir el mensaje. Eso podría ser costoso, pero espero que WPF no se moleste en tratar de imprimir el mensaje si no hay dónde imprimirlo ... Por supuesto, ya que no lo he medido, mis conjeturas no tienen ningún valor ... ! – itowlson

Respuesta

6

Solo está viendo esa salida porque está ejecutando dentro de Visual Studio. Normalmente esas declaraciones de rastreo no van a ninguna parte porque no hay un oyente de rastreo. De cualquier manera, las implicaciones de rendimiento son completamente insignificantes.

Las excepciones, por otro lado, serían una forma muy costosa de informar fallas de enlace, particularmente porque, como usted nota, a menudo hay enlaces que funcionan contra algunos objetos pero no contra otros.

14

No he probado esto por mí mismo, sino un blog post from the Visual Studio team dice que los errores de la unión de hecho rendimiento de impacto:

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