2011-12-02 20 views
6

W tym przykładzie:Wiążące słowo kluczowe odnosi się do czego?

<TextBox Name="textBox1" Height="23" Text="some text" HorizontalAlignment="Left" Margin="69,12,0,0" VerticalAlignment="Top" Width="120" /> 
<Label Content="{Binding Path=Text, ElementName=textBox1}" Height="28" HorizontalAlignment="Left" Margin="235,12,0,0" Name="label1" VerticalAlignment="Top" /> 

cokolwiek wpisać w polu tekstowym pojawi się na etykiecie. Uczę się xaml i uważam, że rozumiem większość wiązań takich jak ta. Ale myślę, że chociaż rozumiem, co się dzieje, dobrze jest zrozumieć, do czego odnosi się słowo Binding? na przykład mogę:

<ListView ItemsSource="{Binding}" Name="lv1" /> 

Trudno mi zrozumieć, o co tak naprawdę chodzi w związku? Po słowach Binding nie ma nic, więc do czego jest ono wiążące? Czy odnosi się do tej kontroli? Czy jest podobny do słowa kluczowego użytego w języku C#, gdzie będzie odnosić się do bieżącego instancji obiektu klasy?

Odpowiedz

4

To nie jest słowo kluczowe, jest to markup extension.

Wiązania zawsze wiążą się z Path stosunku do źródła, jeśli nie ma ścieżki wiążą się one bezpośrednio do źródła, możliwe źródła jesteś DataContext, który jest używany w sposób dorozumiany, jeśli nie podano innego źródła i ElementName, Source i RelativeSource. Proszę przeczytać the overview, jeśli jeszcze tego nie zrobiłeś.

1

Jest to powiązanie z usługą Property DataContext okna. Jeśli jest lista elementów w , zobaczysz ją w ListBoxie.

Na przykład wpisz DataContext = new List<string> { "A", "B", "C" }; w konstruktorze okna po InitializeComponents();, a zobaczysz tę listę w swoim ListBoxie.

+0

Tak, wierzę, że wiem, jak to działa. W rzeczywistości wiążę go z zapytaniem linq. Więc kiedy nie ma nic określonego (po prostu masz słowo kluczowe {binding}), odnosi się ono do kontekstu danych okna? jeśli jest określona właściwość i cel, to zostanie ona powiązana z tym celem lub bez względu na to, co zostanie określone? –

+1

@TonoNam: Masz rację. – Fischermaen

Powiązane problemy