二. Binding 详解

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值