ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

第六章-元素绑定

第六章-元素绑定

1、元素简单绑定

  <StackPanel><TextBlock Text="{Binding ElementName=slider, Path=Value}" Margin="10" FontSize="20"></TextBlock><Slider x:Name="slider" Height="20" Width="200" Margin="50" Maximum="100" Minimum="0" VerticalAlignment="Center"></Slider></StackPanel>

 

2、绑定模式

  单向绑定OneWay

  双向绑定:TwoWay

  单次绑定:OneTime(源变化一次后,目标不跟随继续变化)

  OneWayToSource:与OneWay方向相反

 

3、多绑定

 

4、绑定更新

  双向绑定时:文本框消息改变后,源要在文本框失去焦点才能更新

<StackPanel><TextBox Text="{Binding ElementName=slider, Path=Value,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="10" FontSize="20"></TextBox><Slider x:Name="slider" Height="20" Width="200" Margin="50" Maximum="100" Minimum="0" VerticalAlignment="Center"></Slider><Button Height="30" Width="50"></Button>
</StackPanel>
 UpdateSourceTrigger:

PropertyChanged:当目标属性发生变化时立即更新源
LostFocus当目标属性发生变化并且目标丢失焦点时更新源
Explicit:除非调用 BindingExpression.UpdateSource()方法,否则无法更新源
Default:根据目标属性的元数据确定更新行为(从技术角度看,是根据FrameworkPropertyMetadataDefaultUpdateSourceTrigger属性决定更新行为)。大多数属性的默认行为是PropertyChanged,但TextBox.Text属性的默认行为是LostFocus

5、绑定延迟

  加入Delay属性即可

 

6、Source属性

  指定绑定的数据对象

 <Window.Resources><FontFamily x:Key="CustomFont">Calibri</FontFamily></Window.Resources><StackPanel><!--指向一些已经准备的静态对象,为设置Binding.Source属性,需要结组静态拓展标记--><TextBlock Text="{Binding Source={x:Static SystemFonts.IconFontFamily},Path=Source}"></TextBlock><!--绑定资源--><TextBlock Text="{Binding Source={StaticResource CustomFont},Path=Source}"></TextBlock></StackPanel>

 

7、RelativeSource属性

  寻找上一级的元素,例如控件样式、数据模板当中常用

 <Grid Background="Wheat"><TextBlock Height="50" Width="90" Background="{Binding Path=Background,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}}}"></TextBlock></Grid>

 

8、DataContext属性

  可以在其父元素及以上元素指定数据对象

  <StackPanel DataContext="{x:Static SystemFonts.IconFontFamily}"><TextBlock Text="{Binding Source}"></TextBlock><TextBlock Text="{Binding LineSpacing}"></TextBlock><TextBlock Text="{Binding FamilyTypefaces[0].Style}"></TextBlock><TextBlock Text="{Binding  FamilyTypefaces[0].Weight}"></TextBlock></StackPanel>

后台代码当中指定数据上下文DataContext

 public partial class 元素绑定 : Window{public 元素绑定(){InitializeComponent();this.DataContext = new Student { Name="张三",Age="17"};}class Student{public string Name {  get; set; }public string Age {  get; set; }}}
 <TextBlock Text="{Binding Name}"></TextBlock><TextBlock Text="{Binding Age}"></TextBlock>

 

返回列表