2010-08-17 28 views
35

Ho visto molti esempi di binding WPF e ho utilizzato la funzione in molti punti diversi nell'apprendimento di MVVM, ma qualcosa che mi è sembrato del tutto incoerente è quando si specifica "Path =" nella stringa di associazione come appose semplicemente digitando la proprietà a cui si desidera associare. Ad esempio, qual è la differenza funzionale tra i seguenti attributi XAML:Quando utilizzare Path in WPF Binding?

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

risposta

38

Non c'è alcuna differenza funzionale. La proprietà predefinita dell'oggetto Binding è Path, ciò significa che se non si specifica la proprietà che si sta impostando, verrà impostato Path.

Questo perché l'oggetto Binding ha due costruttori, uno predefinito e uno che accetta un singolo parametro di stringa. Quando si passa un valore senza etichettare la proprietà verrà inoltrata al costruttore corrispondente, nel caso di Binding questo imposta il percorso. E 'molto simile nel concetto al modo in cui gli attributi di lavoro, una chiamata al costruttore seguito da parametri opzionali, ad esempio:

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

Probabilmente modo là di ciò che si sta effettivamente facendo la domanda per, ma ho notato che c'è una leggera (e probabilmente irrilevante) differenza tra i due. Dal momento che non riesco a spiegarlo, ho iniziato una nuova domanda a riguardo here.

+0

Quindi, se volessi specificare altri parametri come Mode, avrei bisogno di contrassegnarlo esplicitamente come Path? –

+7

No, non se il percorso è il tuo primo argomento: funzionerà, no, will. –