2012-02-17 16 views
18

Uso un montón de enlaces en XAML y algunas veces uso path = en un enlace y algunas veces no. ¿En qué casos necesito la ruta = y cuándo puedo omitir esto?¿Cuál es el uso de Path = en XAML?

+4

relacionadas: [Diferencia entre PropertyName {Binding} y {Binding Path = PropertyName}] (http://stackoverflow.com/ preguntas/4306657/diferencia-entre- binding-propertyname-and-binding-path-propertyname) –

Respuesta

9

Siempre se puede omitir ya que es la propiedad predeterminada de la extensión Binding XAML. Solo se especifica explícitamente para mayor claridad cuando se usan múltiples propiedades.

+0

Gracias ... en ese caso voy a eliminar la palabra clave (al menos si el resaltado de sintaxis sigue siendo bueno como en otro comentario). (Puedo aceptarlo en unos minutos). –

+3

No existe una propiedad predeterminada cuando se trata de extensiones de marcado, por decirlo es demasiado vago ya que estamos tratando con constructores aquí. Y tampoco [siempre se puede omitir] (http://stackoverflow.com/a/9383001/546730). –

4

Siempre se puede omitir el Path = cuando se escribe la ruta de acceso a la propiedad directamente detrás de la sentencia Binding.

{Binding MyProperty} 

es lo mismo que

{Binding Path=MyProperty} 

Cuando Inline la ruta de la propiedad es necesario especificar con Path = dijo

{Binding FallbackValue='HelloWorld', Path=MyProperty} 
2

Como Richard Szalay, es opcional si es la primera propiedad. Pero en mi opinión, es más fácil de leer si ingresas a la propiedad del camino. También el resaltado del código se ve mejor.

9

Esto se debe al hecho de que la clase Binding tiene un constructor predeterminado, que se usa cuando tiene enlaces como {Binding FallbackValue='HelloWorld', Path=MyProperty} y un constructor que tiene un solo argumento Path.

Así que cuando hay una lista de pares de propiedad/valor se crea la unión como

new Binding(){ 
    Path="MyProperty" 
    ElementName="MyElement" 
} 

La segunda forma se utiliza para los enlaces como {Binding MyProperty, ...}. En este caso, la unión se crea como

new Binding("MyProperty"){ 
    ElementName = "MyElement", 
    ... 
} 

Siempre es correcta (y posiblemente más correcto) para especificar Path =, pero se puede salir sin él.

6

La ruta de acceso se utiliza para especificar el nombre de la propiedad del objeto subyacente al que enlazarse.

Cuando se enlaza a la DataContext, se puede omitir Path:

{Binding MyProperty}  

{Binding Path=MyProperty} 

Cuando es necesario especificar una fuente que no sea el DataContext puede utilizar Source, RelativeSource, o ElementName para referirse al objeto, por lo por lo general tendrá que especificar a qué propiedad de que desea establecer su unión:

<Button Background="{Binding ElementName=refButton, Path=Background}"/> 

<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/> 
Cuestiones relacionadas