2010-08-17 19 views
35

He visto muchos ejemplos de WPF Binding y he utilizado la función en muchos lugares diferentes para aprender MVVM, pero algo que me ha parecido bastante inconsistente es cuando especifica "Path =" en la cadena de enlace como apuntar simplemente tecleando la propiedad a la que desea vincularse. Por ejemplo, ¿cuál es la diferencia funcional entre los siguientes atributos XAML:Cuándo usar la ruta en enlace WPF?

DataMemberBinding="{Binding SomeProperty}" 
DataMemberBinding="{Binding Path=SomeProperty}" 

Respuesta

38

No hay diferencia funcional. La propiedad predeterminada del objeto Binding es Path, esto significa que si no especifica qué propiedad está configurando, entonces establecerá Path.

Esto se debe a que el objeto de enlace tiene dos constructores, uno por defecto y otro que toma un solo parámetro de cadena. Cuando transfiere un valor sin etiquetarlo, esa propiedad se reenviará al constructor correspondiente, en el caso de Binding esto establece la ruta. Es muy similar en concepto a la forma en que funcionan los atributos, una llamada al constructor seguido de parámetros opcionales, por ejemplo:

[AttributeUsage(AttributeTargets.Class), AllowMultiple = false, Inherited = false ] 

Probablemente manera más allá de lo que en realidad estás haciendo la pregunta de, pero me he dado cuenta de que hay una diferencia leve (y probablemente inconsecuente) entre los dos. Como no puedo explicarlo por mi cuenta, comencé una nueva pregunta al respecto here.

+0

Entonces, si quisiera especificar otros parámetros como Modo, entonces tendría que marcar esto explícitamente como una ruta de acceso? –

+7

No, no si la ruta es su primer argumento: funcionará, no lo hará, will. –