Binding 将源数据绑定到目标数据
使用 Mode 属性指定绑定的方向。以下枚举列表列出了可供绑定更新的选项:
-
TwoWay 无论是目标属性还是源属性,只要发生了更改,TwoWay 就会更新目标属性或源属性。
-
OneWay 仅当源属性发生更改时更新目标属性。
-
OneTime 仅当应用程序启动时或 DataContext 进行更改时更新目标属性。
-
OneWayToSource 在目标属性更改时更新源属性。
-
Default:使用目标属性的默认 Mode 值。
绑定到元素对象:
绑定到非元素对象:
Source 属性 :绑定到元数据的引用,(比如已经准备好的数据对象)
RelativeSource 属性:可以根据相对于目标对象的关系指向源对象
DataContext 属性:将大量的元素绑定到同一个元素
1.Source :
方式一:
<TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily},Path=Source}
方式二:
<Window.Resources>
<FontFamily x:Key="cusotnfont">Calibri</FontFamily>
<FontFamily x:Key="cusotnfont1">Seria</FontFamily>
</Window.Resources>
.......
<TextBlock Margin="5" Text="{Binding Source={StaticResource cusotnfont},Path=Source}"/>
2 RelativeSource
绑定到StackPanel 的Name属性
<TextBlock Margin="3">
<TextBlock.Text>
<Binding Path="Name">
<Binding.RelativeSource>
<RelativeSource Mode="FindAncestor" AncestorType="{x:Type StackPanel}"></RelativeSource>
</Binding.RelativeSource>
</Binding>
</TextBlock.Text>
</TextBlock>
RelativeSource 的 Mode有四个枚举值
FindAncestor: 绑定到父元素
PreviousData:
Self: 绑定到自身的熟悉
TemplatedParent: 绑定到应用模板的元素
另一种简单的写法:(绑定到window的 Title熟悉))
<TextBlock Margin="5" Text="{Binding Path=Title ,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}}}"/>
<!--AncestorLevel来找父类的层级--> 确定父层,是那一层
<!--AncestorLevel来找父类的层级-->
<TextBlock Margin="5" Text="{Binding Path=Name ,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type StackPanel},AncestorLevel=2}}"/>
3.DataContext