2011-12-02 51 views
6

在这个例子中:绑定关键字是指什么?

<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" /> 

无论我在文本框中键入将在标签上显示。我正在学习xaml,并且我相信我理解了大多数Bindings,比如这个。但我认为即使我明白发生了什么,理解Binding关键字所指的是什么会很好?例如我可以有:

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

我很难理解绑定实际上是指什么? Binding关键字后没有任何内容,那么它绑定了什么?它是否涉及该控制?它是否类似于c#中使用的this关键字,它将引用类的当前实例化对象?

回答

4

这不是关键字,它是markup extension

绑定总是结合Path相对于源,如果存在,他们直接绑定到源的路径,可能的来源是如果没有指定其他源被隐含地使用的DataContextElementNameSourceRelativeSource。如果你还没有这样做,请阅读the overview

1

这是窗口的属性DataContext的绑定。如果 中有元素列表,您将在列表框中看到它。

例如在InitializeComponents();之后在窗口的构造函数中输入DataContext = new List<string> { "A", "B", "C" };,您将在列表框中看到该列表。

+0

是的,我相信我知道它是如何工作的。我实际上将它绑定到linq查询。因此,当没有指定任何内容(您只有{binding}关键字)时,它指向窗口的数据上下文?如果有一个指定的属性和一个目标,它将绑定到该目标或任何指定的目标? –

+1

@TonoNam:你说得对。 – Fischermaen