我遵循了不同的教程和示例,他们向我展示了那些不同类型的绑定,但我无法理解何时使用其中一个,何时使用另一个。
例如,我有时会看到:
Binding="{Binding}"
设置DataContext
:
Binding="{Binding Propriety1}"
在DevExpress GridControl中,我看到:
Binding="{Binding Data.ProprietyName}"
和其他人 可以很快解释清楚为什么这么不同的案例?我在网上搜索,但教程只说了什么是绑定(我知道是什么)和一个简单的例子,就像我写的第三个。
提前谢谢。
答案 0 :(得分:3)
K这里是您要求的简单解释:
Binding="{Binding}"
当你绑定DataContext
对象本身时。因此,无论当前作用域中DataContext
是什么,绑定都是绑定的。也可以写成Binding="{Binding .}"
下一步:
Binding="{Binding Propriety1}"
您可以在当前Propriety1
内绑定DataContext
。这个与{Binding DataContext.Propriety1, RelativeSource={RelativeSource Self}}" />
最后:
Binding="{Binding Data.ProprietyName}"
此处你绑定属于ProprietyName
的{{1}},Data
是当前DataContext
所有这些都显示在此示例中:Download Link
<StackPanel x:Name="LayoutRoot">
<TextBlock DataContext="{Binding TestStringOne}"
Text="{Binding}" />
<TextBlock DataContext="{Binding TestStringOne}"
Text="{Binding .}" />
<TextBlock Text="{Binding TestStringTwo}" />
<TextBlock Text="{Binding Data.TestStringThree}" />
</StackPanel>
您可以在Data
中找到属性和MainViewModel.cs
对象的课程