Co oznacza „{Binding Path =.}” W powiązaniu WPF?

92

Co {Binding Path=.}oznacza w powiązaniu WPF?

Widzę, że niektórzy go używają, ale nie mogłem znaleźć żadnego wyjaśnienia.

Czy są jakieś inne symbole specjalne w składni powiązań (inne niż {Binding /})?

Sergey Aldoukhov
źródło

Odpowiedzi:

60

To jest skrót do wiązania z bieżącym źródłem. Więcej informacji znajdziesz tutaj .

W szczególności z dokumentacji:

Opcjonalnie do powiązania z bieżącym źródłem można użyć ścieżki kropki (.). Na przykład Text="{Binding}"jest równoważne z Text="{Binding Path=.}".

micahtan
źródło
1
@Ray - dokładnie moje myśli. Jeśli masz zamiar stenografować, po co na tym poprzestać?
micahtan
5
Nie mogę dyskutować z MSDN, ale nadal istnieje różnica. {Binding} nie może być użyty na samym obiekcie (ponieważ wymaga właściwości), podczas gdy {Binding Path =.} Działa.
Sergey Aldoukhov
@Sergey - Czy masz przykład kodu, w którym {Binding} nie działa, ale {Binding Path =.} Działa? Jeśli tak, MSDN prawdopodobnie wymaga aktualizacji ...
micahtan
Łatwo: var s = "test; DataContext = s; i w <TextBox Text = {Binding} /> - nie działa. Ale MSDN to nie wiki ...
Sergey Aldoukhov
8
Inny przykład: <TextBlock Text = "{Binding Converter = ...}" /> nie działa, ponieważ musisz ustawić ścieżkę. W takim przypadku Path =. jest przydatny.
Nicolas,
69

Znalazłem ten ściągawka do wiązania WPF kilka miesięcy temu i uważam ją za bardzo przydatną, szczególnie dla każdego, kto uczy się WPF. Jest w nim kilka błędów ortograficznych, ale nadal jest całkiem niezły.

Oto mały fragment (który powinien mieć formatowanie tabelaryczne):

Basic Binding   
{Binding}  Bind to current DataContext. 
{Binding Name}  Bind to the “Name” proeprty of the current DataContext. 
{Bindind Name.Length}  Bind to the Length property of the object in the Name property of the current DataContext. 
{Binding ElementName=SomeTextBox, Path=Text}  Bind to the “Text” property of the element XAML element with name=”SomeTextBox” or x:Name=”SomeTextBox”. 

Bezpośredni link do CheatSheet

Ryan Versaw
źródło
2
fajny, ale co to jest {Binding.}. Szukam wyjaśnienia tego, ale nie mogę go znaleźć?
Emil
@batmaci Chcę powiedzieć, że jest to równoważne {Binding }, ale minęło już kilka lat, odkąd dużo pracowałem z Xaml, więc nie jestem pewien.
Ryan Versaw
@batmaci, lata później ... {Binding string}jest podobny do {Binding Path=string}. stringnie jest używany do Pathbezpośredniego inicjowania właściwości , ale jako parametr konstruktora, Binding (string path)który następnie inicjuje Pathwłaściwość. Działa to tylko wtedy, gdy ciąg jest pierwszym tokenem po Binding, a reszta to zwykłe inicjatory (pary właściwość = wartość). Wiedza o tym Binding .jest w rzeczywistości równa Binding Path=.składni ścieżki, a właściwość Składnia ścieżki jest dostępna tutaj .
min