WPF 绑定方式Binding、TemplateBinding、TemplatedParent


属性binding方式

绑定到DataContext

<!--绑定到DataContext-->
<Button Content="{Binding DataTime}"/>
<Button Content="{Binding RelativeSource={RelativeSource self},Path=DataTime}"/>

<!--绑定到DataContext,并设置绑定模式-->
<Button x:Name="btn" Content="{Binding DataTime,Mode=OneTime}"/>

<!--绑定到DataContext,并设置更新模式-->
<Button Content="{Binding DataTime,UpdateSourceTrigger=PropertyChanged}"/>

<!--绑定到DataContext,并设置转换模式-->
<Button Content="{Binding DataTime,Converter={StaticResource ConvertResource},ConverterParameter=btn1}"/>

绑定到Element

<!--绑定到Element中指定属性-->
<Button Content="{Binding ElementName=btn,Path=Content}"/>

<!--绑定到相对位置中的自身模式-->
<Button Content="{Binding Tag, RelativeSource={RelativeSource Self}}" Tag="MyTag"/>

绑定到父级别

<!--绑定到相对位置中的父级别查找模式 绑定到指定类型-->
<Button Content="{Binding Content, RelativeSource={RelativeSource AncestorType=UserControl}}"/>

<!--绑定到相对位置中的父级别查找模式 绑定到指定层级-->
<Button Content="{Binding Content, RelativeSource={RelativeSource Mode=FindAncestor,AncestorLevel=2}}"/>

<!--绑定到相对位置中的父级别查找模式 绑定到模板内容 Template使用者元素的属性上-->
<Button Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}"/>

<!--GroupBox.Heade自定义显示-->
<GroupBox>
    <GroupBox.HeaderTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Header, RelativeSource={RelativeSource AncestorType={x:Type GroupBox},AncestorLevel=1}}" FontSize="12"/>
        </DataTemplate>
    </GroupBox.HeaderTemplate>
    <Grid x:Name="grdContent">
	</Grid>
</GroupBox>

TemplateBinding与Binding

TemplateBinding是Binding的一个轻量级版本,最主要的用途是内置在模板中绑定模板化元素的属性。
Background="{TemplateBinding Foreground}"
Background="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}"

TemplateBinding的数据绑定是单向的,从数据源到目标。
TemplateBinding不能对数据对象进行自动转换,数据源和目标的数据类型不同时候,需要自己写转换器。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM