一、绑定要点
一个标准的绑定三要素:绑定源、绑定方式、绑定目标。
例:<TextBox x:Name="MyTextBox" Text="Text" Foreground="{Binding Brush1, Mode=OneWay}"/>
TextBox.Foreground属性为绑定目标
Brush1为绑定源
花括号之间内容为绑定方式
只有依赖属性才可以做为绑定目标
1、绑定源
在SilverLight中存在三种不同的绑定源:一般绑定、元素绑定、位置绑定
一般绑定:【Source】 任何对象的引用 <TextBlock x:Name="TextBlock1" Text="test" Foreground="{Binding Path=color1, Source=vm}" />
元素绑定:【ElementName】 同一个XAML中的元素,以Name或x:Name关联 <TextBlock Text="{Binding ElementName=TextBlock1, Path=Text}" />
位置绑定:【RelativeSource】 相对于绑定目标的位置来指定数据源
有一个比较特殊的绑定叫模板内绑定【TemplateBinding】,某一个元素的模板内部,可以直接绑定到这个元素上的属性。在数据模板中特别有用。
<Button Content="Click"> <Button.Template> <ControlTemplate> <TextBlock Text="{TemplateBinding Content}" /> </ControlTemplate> </Button.Template></Button>2、绑定方式
绑定的书写方式非常灵活,初学容易被混淆。
标准写法: {Binding Path=PropertyName , Source=Object ……} 明确指定绑定源与绑定属性
变形一: {Binding Path=PropertyName ……} 只指定了绑定属性,省略绑定源时,以当前上下文为绑定源
变形二: {Binding PropertyName ……} 省略”Path“标记
变形三: {Binding Source=Object ……} 只指定绑定源,绑定直接绑定到目标上。
也有一种特殊的绑定方式即资源绑定
这种方式可以直接将绑定源指向资源字典的某一项,比较常用,下面种写法不同,但效果相同
<Button Style="{StaticResource ButtonStyle}" /><Button Style="{Binding Source={StaticResource ButtonStyle}}" />3、绑定目标
绑定目标必须是依赖项属性
二、绑定标记扩展
绑定的标记扩展中有关键的几个需要牢记:Path、Source、ElementName、RelativeSource、Mode
其中Source、ElementName、RelativeSource是指定绑定源、Mode指定绑定模式、Path是指定绑定源的具体属性
在Path中可以使用点语法指定Path=PropertyName.PropertyName2也可以使用索引指定(无引号)Path=PropertyList[0]Path=PropertyList[Key]也可以混合使用Path=PropertyName.PropertyList[0]Path=PropertyList[Key].PropertyName